如何在mathematica中做高精度浮点算法

时间:2011-01-20 04:15:33

标签: wolfram-mathematica

例如,在Mma中,我想计算

1.0492843824838929890231*0.2323432432432432^3

但它没有显示完整的精度。我尝试了N或其他各种功能,但似乎都没有。怎么做到这一点?非常感谢。

3 个答案:

答案 0 :(得分:3)

当您使用小数点指定数字时,它们需要MachinePrecision,大约16位数,因此结果通常少于16个有意义的数字。通过使用有理数/代数数,可以实现无限精度。如果您希望有限精度优于默认值,请指定您的数字

123.23`100

这使得Mathematica将数字解释为具有100位精度。所以你可以做到

ans=1.0492843824838929890231`100*0.2323432432432432`100^3

使用Precision

检查最终答案的精确度
Precision[ans]

查看tutorial/ArbitraryPrecisionNumbers了解详情

答案 1 :(得分:1)

您可以这样做:

r[x_]:=Rationalize[x,0];

n = r@1.0492843824838929890231 (r@0.2323432432432432)^3  

输出:

228598965838025665886943284771018147212124/17369643723462006556253010609136949809542531

现在,例如

N[n,100]  

0.01316083216659453615093767083090600540780118249299143245357391544869\
  928014026433963352910151464006549

答案 2 :(得分:0)

有时你只想看到更多的机器精度结果。这些是一些方法。

(1)将光标放在输出行的末尾,然后按Enter(不在数字键盘上)将输出复制到新的输入行,显示所有数字。

(2)在InputForm[1.0/7]

中使用InputForm

(3)使用选项检查器更改PrintPrecision的设置。