enqi01 发表于 2007-6-13 14:43

sin(pi)不等于0

我的MATLAB的sin(pi)不等于零,输入sin(pi)
ans =
1.2246e-016
怎么设置精度,请指点啊

[ 本帖最后由 eight 于 2007-6-13 16:02 编辑 ]

enqi01 发表于 2007-6-13 14:44

显示

sin(pi)

ans =

1.2246e-016

gerry 发表于 2007-6-13 15:33

数字“派”总有会有截断误差,作数值计算要习惯这一点

eight 发表于 2007-6-13 16:01

原帖由 enqi01 于 2007-6-13 14:43 发表 http://www.chinavib.com/forum/images/common/back.gif
我的MATLAB的sin(pi)不等于零,输入sin(pi)
ans =
1.2246e-016
怎么设置精度,请指点啊

help format, digits

cars 发表于 2007-6-14 14:44

eps(pi)表示你的精度

pengweicai 发表于 2007-6-14 16:41

1.2246e-016,可以了,,不要还是那种死板的想法。

花如月 发表于 2007-6-14 19:00

也可以等于零:
sprintf('%.15f',sin(pi))

ans =

0.000000000000000

>> a= sprintf('%.15f',sin(pi))
a =
0.000000000000000

按照你需要的精度,然后定义一个常量a= sprintf('%.Nf',sin(pi))代替sin(pi)就可以。N是需要的小数点后0的个数,使sin(pi)=0的最大N就是15了:loveliness:

[ 本帖最后由 花如月 于 2007-6-14 19:06 编辑 ]

gerry 发表于 2007-6-14 21:41

原帖由 花如月 于 2007-6-14 19:00 发表 http://www.chinavib.com/forum/images/common/back.gif
也可以等于零:
sprintf('%.15f',sin(pi))

ans =

0.000000000000000

>> a= sprintf('%.15f',sin(pi))
a =
0.000000000000000

按照你需要的精度,然后定义一个常量a= sprintf('%.Nf',sin(pi))代替 ...

截断输出,逆向思维哈

花如月 发表于 2007-6-14 22:47

回复 #8 gerry 的帖子

楼主要得到零的结果,我想来想去也就只有这个法子而已:@L
页: [1]
查看完整版本: sin(pi)不等于0