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

例如:保留3位有效数字这样可以:输入:N[Pi,3]输出:3.14这样就不行:输入:N[3.1416,3]输出:3.1416只能这样:输入:Round[3.1416*10... 例如:保留3位有效数字这样可以:
输入:N[Pi,3]输出:3.14这样就不行:输入:N[3.1416,3]输出:3.1416只能这样:输入:Round[3.1416*100]/100.输出:3.14
展开
 我来答
xzcyr
2013-04-17 · 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只改变数字的显示格式,不会改变数的实际大小。
i是我_我是i
2018-01-05
知道答主
回答量:6
采纳率:0%
帮助的人:5854
展开全部
第一种做法:利用N函数
保留n位有效数字:N[x, n]

保留n位小数:N[x, n+1+Floor[Log10[x]]]
第二种做法:利用NumberForm函数
语法:NumberForm[要显示的数字, {总位数, 小数点后位数}]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-17
展开全部
用NumberForm[N[π],2]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fe7dceac7
2013-04-17 · TA获得超过832个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:422万
展开全部
NumberForm[3.1416, 3]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凪之秋
2024-09-21
知道答主
回答量:19
采纳率:75%
帮助的人:3849
展开全部
NumberForm[]之类的都不行,因为这类函数只是改变数字的形式(form),实际并不代表将数字的实际改变
使用SetPrecision[]可以真正地改变数字。
输入 SetPrecision[3.111101, 3] == 3.11
输出 True
说明了SetPrecision的功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式