声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4325|回复: 8

[编程技巧] sin(pi)不等于0

[复制链接]
发表于 2007-6-13 14:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

[ 本帖最后由 eight 于 2007-6-13 16:02 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-6-13 14:44 | 显示全部楼层

显示

sin(pi)

ans =

  1.2246e-016
发表于 2007-6-13 15:33 | 显示全部楼层
数字“派”总有会有截断误差,作数值计算要习惯这一点
发表于 2007-6-13 16:01 | 显示全部楼层
发表于 2007-6-14 14:44 | 显示全部楼层
eps(pi)表示你的精度
发表于 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 编辑 ]
发表于 2007-6-14 21:41 | 显示全部楼层
原帖由 花如月 于 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))代替 ...


截断输出,逆向思维哈
发表于 2007-6-14 22:47 | 显示全部楼层

回复 #8 gerry 的帖子

楼主要得到零的结果,我想来想去也就只有这个法子而已:@L
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 10:31 , Processed in 0.059973 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表