你如何围绕mathematica中的表达式的小数点

时间:2014-07-25 16:14:43

标签: math wolfram-mathematica rounding

我想知道如何将表达式中的数字舍入到小数点后1位。

例如,mathematica给了我0.7888888888000002*x+1.0000000002*x^2+2.1000002*x^3==0,我想知道如何在mathematica中对这些数字进行舍入。

我现在在网上浏览了半个小时,我找不到任何东西。

2 个答案:

答案 0 :(得分:4)

将所有实数替换为舍入为.1

的数字
In[1]:= ReplaceAll[0.7888888888000002*x+1.0000000002*x^2+2.1000002*x^3==0, 
   n_Real->Round[n, .1]]

Out[1]= 0.8 x + 1. x^2 + 2.1 x^3 == 0

答案 1 :(得分:2)

你说"围绕"但比尔建议Round这样做不行。为此,使用Round替换代码中的Ceiling

如果舍入实际上是您想要的(因为您接受了该答案),请考虑使用Rationalize。理性数字将以无限精度处理,取决于您正在做什么,可以是好的或坏的。与Round不同,它会自动对表达式进行换行,因此您不需要使用ReplaceAll等。

eq = 0.7888888888000002*x + 1.0000000002*x^2 + 2.1000002*x^3 == 0

Rationalize[eq, 0.02]
(4 x)/5 + x^2 + (19 x^3)/9 == 0

请注意,使用精确算术可让 Mathematica 消除第二项的系数。

RoundCeiling一样,第二个参数决定了操作的粒度。


访问专用的 Mathematica Stack Exchange网站:

Mathematica.StackExchange