Mathematica实数保留n位有效数字和保留n位小数的最简单的方法分别是什么?

 我来答
xzcyr
2018-01-31 · TA获得超过3400个赞
知道大有可为答主
回答量:1400
采纳率:100%
帮助的人:670万
展开全部
最简单的方法,就是写下 3.1416`3 。

想知道为什么就往下看。

恭喜你,发现了Mathematica(确切地说,这并不是仅限于Mathematica)的数值计算中的一个关键问题。

你的疑惑根源,其实是,N[3.1416, 3] 没有给出你所希望的输出。你觉得它应该会给出3.14,但其实却没有。

这点和3.1416这个数本身的精度大小有关。执行下面的代码:

Precision[3.1416]
(* MachinePrecision *)

MachinePrecision是Mathematica在数值计算时的默认精度,它是一种特殊的精度,采用的是浮点运算,可以获取很快的运算速度。它的数值值是接近16,但是,在进行数值舍入时,它的优先级默认最低,也就是说,不论是多少位数,只要它的精度是MachinePrecision,那么它的精度都会比明确指定出的精度来得低。而N,其实是一种舍入运算而非精度的指定,它是无法由低精度数算出高精度数的。

Pi这样的数,具有无限的精度,所以自然可以用N来舍到三个有效数。

3.1416是MachinePrecision,“精度”最低,所以无法舍到三个有效数。

N[Round[3.1416 100]/100]实质上是先算出来了314/100,这是个准确数,也具有无限精度,所以自然可以舍到3.14。

要直接去指定一个MachinePrecision小数的精度,方法是在这个数的末尾加上“ ` ”再写上你所要的精度。怎么样,很简单吧。

顺便,NumberForm只改变数字的显示格式,不会改变数的实际大小。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式