24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 1312  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

3441KM

银虫 (初入文坛)

[交流] matlab中的逻辑判断怎么不正确呢?已有2人参与

c=0.07;t=(0.0007*100); t
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

3441KM

银虫 (初入文坛)

引用回帖:
5楼: Originally posted by dk1013 at 2012-11-09 12:59:30
未必吧?无穷多个数,只有一个有问题还被你发现了???
这个概率有多小啊?
0.7试过也是有这个问题的...

这个不知道,你可以试哈别的,呵呵,
6楼2012-11-09 14:18:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主


小木虫: 金币+0.5, 给个红包,谢谢回帖
试了试,确实如此。

有可能是计算机存储的问题,把数值显示精度修改后,发现t的值和c的值是相同的,用t == c 返回0,
明德厚学、求是创新
2楼2012-11-08 19:47:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dk1013

木虫 (正式写手)

★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
xiegangmai: 金币+2, 鼓励讨论交流 2012-11-09 15:21:59
这个很显然了,因为十进制和二进制相互转换时有一个机器误差。
也就是说很多数在两个进制之间转换时是无法做到完全精确转换的,除非你有无穷多位来存储。
具体说,0.7转换成二进制的时候产生的误差跟0.0007转换成二进制时的误差的一千倍并不相等。
你可以试试:

c=0.07;t=(0.0007*100); c-t
答案是一个非零的数(虽然很接近零)。
到得还来别无事 庐山烟雨浙江潮
3楼2012-11-08 22:00:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

3441KM

银虫 (初入文坛)

引用回帖:
3楼: Originally posted by dk1013 at 2012-11-08 22:00:02
这个很显然了,因为十进制和二进制相互转换时有一个机器误差。
也就是说很多数在两个进制之间转换时是无法做到完全精确转换的,除非你有无穷多位来存储。
具体说,0.7转换成二进制的时候产生的误差跟0.0007转换成 ...

但是如果换成其他数值就是正确的,只有0.07有问题,,呵呵
4楼2012-11-09 00:58:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见