如果你想解构一个浮点数,我们首先要确保它是一个大浮点数。 说z: 34.1
您可以通过使用lisp来访问bigfloat的部分,您还可以通过?fpprec
访问尾数长度的位数。
因此?second(z)*2^(?third(z)-?fpprec)
为您提供:
4799148352916685/140737488355328
和bfloat(%)
为您提供:
3.41b1.
如果你想z的尾数为整数,看?second(z)
现在,我不知道是什么是你试图完成10,但千里马 不做内部算术的基数10.
如果你想要更多的位或更少,您可以设置链接到?fpprec
的fpprec, 。 fpprec是“近似基数10”的精度。 因此fpprec最初是16 ?fpprec
相应地是56.
你可以很容易地改变它们,例如, fpprec:100 相当于335
?fpprec
如果您正在使用的浮点表示,diddling周围,你可能会受益于知道 ,你可以通过输入,例如看任何口齿不清的, ?print(z)
它使用Lisp打印功能打印内部表单。
您还可以跟踪任何函数,您自己的或系统函数。对于n
trace(append,rnd,integrate);
如果你想使用机器的花车,我建议你使用,最后一行,
30通1个-1 DO: 例如,你可以考虑做此
Ibwd:append([[n-1,rnd(1/(2.0*n- 1.0)-a*last(first(Ibwd)),d)]],Ibwd);
请注意小数点。但即使这样还不够,因为集成 会插入像atan(10)这样的精确结构。试图围绕这些事情,或计算它们的日志可能不是你想要做的。我怀疑Maxima是不高兴的,因为日志给出了一些混乱的表达,结果是消极的,尽管它最初的想法是另外的。它把这个数字交给了lisp日志程序,它非常乐意返回一个合适的common-lisp复数对象。不幸的是,Maxima大部分都是在LISP HAD COMPLEX NUMBERS之前编写的。
因此结果(log -0.5)= #C(-0.6931472 3.1415927)
是完全出乎意料的其余的千里马。 Maxima对复数有自己的形式,例如3+4*%i
。
尤其是,Maxima显示程序早于常见的lisp复数格式,并不知道如何处理它。
错误(堆栈溢出!!!)是显示程序试图显示一个常见的lisp复数。
如何解决这一切?那么,你可以尝试改变你的程序,以便计算你真正想要的,在这种情况下,它可能不会触发这个错误。 Maxima的显示程序也应该修复。另外,我怀疑在简化数字记录方面存在一些不幸的现象,这些记录是负面的,但并不明显。
这可能是太多的原始海报信息,但也许上面的段落将有所帮助,也可能改善Maxima在一个或多个地方。
那么,我得出的结论是,问题与四舍五入功能 - 没有它,它工作得很好。那么问题是什么? – Anne