如何解决int0.1 + 0.7* 10= 7种几种语言如何预防呢?
解决方法
最近,我遇到了几种语言的错误/功能。我对它的产生有非常基本的了解(我想作一些详细的解释),但是当我想到多年来我必须犯下的所有错误时,问题是我如何确定“
嘿,这可能会导致一个荒谬的错误,我最好使用任意精度函数 “,其他语言确实有此错误(以及那些没有的语言, 为什么
)。另外,为什么这样做0.1 + 0.7,而不是0.1 + 0.3,是否还有其他众所周知的示例?
的PHP
//the first one actually doesn't make any sense to me,//why 7 after typecast if it's represented internally as 8?
debug_zval_dump((0.1+0.7)*10); //double(8) refcount(1)
debug_zval_dump((int)((0.1+0.7)*10)); //long(7) refcount(1)
debug_zval_dump((float)((0.1+0.7)*10)); //double(8) refcount(1)
蟒蛇:
>>> ((0.1+0.7)*10)
7.9999999999999991
>>> int((0.1+0.7)*10)
7
Javascript:
alert((0.1+0.7)*10); //7.999999999999999
alert(parseInt((0.7+0.1)*10)); //7
红宝石:
>> ((0.1+0.7)*10).to_i
=> 7
>>((0.1+0.7)*10)
=> 7.999999999999999
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。