我想知道如何将表达式中的数字舍入到小数点后1位。
例如,mathematica给了我0.7888888888000002*x+1.0000000002*x^2+2.1000002*x^3==0
,我想知道如何在mathematica中对这些数字进行舍入。
我现在在网上浏览了半个小时,我找不到任何东西。
答案 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 消除第二项的系数。
与Round
和Ceiling
一样,第二个参数决定了操作的粒度。
访问专用的 Mathematica Stack Exchange网站: