Wolfram mathematica 如何在mathematica中设置舍入精度

Wolfram mathematica 如何在mathematica中设置舍入精度,wolfram-mathematica,Wolfram Mathematica,我想说明一些数值算法的稳定性。我想使用Mathematica根据通常的规则对浮点数进行四舍五入,例如: NumberForm[89.0/47.0, 3] myRound[3/80.]=0.038如果我指定精度为2位 另一个 myRound[89/47.]=1.89 因此,给定一个精确的数字,如何编写myRound函数?请帮忙。非常感谢。您应该查看NumberForm。例如: NumberForm[89.0/47.0, 3] 返回1.89 事实上,我突然想到,如果你真的想说明四舍五入的问题,

我想说明一些数值算法的稳定性。我想使用Mathematica根据通常的规则对浮点数进行四舍五入,例如:

NumberForm[89.0/47.0, 3]
myRound[3/80.]=0.038
如果我指定精度为2位

另一个

myRound[89/47.]=1.89

因此,给定一个精确的数字,如何编写
myRound
函数?请帮忙。非常感谢。

您应该查看
NumberForm
。例如:

NumberForm[89.0/47.0, 3]
返回1.89


事实上,我突然想到,如果你真的想说明四舍五入的问题,你应该研究一下
计算机算术
软件包。它有很好的文档记录,所以我就到此为止。

我不确定这是否是您想要的:

In[34]:= customRound[x_Real] := 
 Round[x, 10^Round[RealExponent[x]]*0.01]

In[35]:= customRound[3/80.]

Out[35]= 0.038

In[36]:= customRound[89/47.]

该函数实际上会更改数字,而不仅仅是更改数字的显示方式。

但对于第一个示例,它不起作用。在我的Mma中,我得到了0.0375分。理想情况下,我想使用数字的浮点表示法。@Qiang-试试,
NumberForm[3/80.,{3,3}]
。同样,这样数字就不再可操作了。我希望每一次算术运算都能产生四舍五入的数字,而不仅仅是给我看一些特殊的形式,但内部表示仍然是完全精确的。这能做到吗?@强-正确。与大多数
*表单
函数一样,
NumberForm
是一个包装器,它影响显示,但不影响内容
SetAccurance
可能适合您,但我怀疑在您的计算中引入任意精度可能会有问题。@Qiang-请参阅
Computer算术
上的添加。是的,这就是我想要的!然而,有没有简单的方法来改变所有的函数,比如加法、减法、乘法、Exp等,这样当他们看到实数时,他们就会根据这个舍入规则进行算术运算?@QiangLi是的,但这可能会产生意外的后果,所以使用它的风险由你自己承担。Set
$Post=Function[Replace[#,x_Real:>customRound[x]]]
您肯定知道
Round
是一个内置函数,具有不同的含义,对吧?你不想给你的函数取一个不同的名字吗?@David,对。只是忘了区分我自己版本的
Round