int((0.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

回答:

每个计算机科学家都应了解的浮点运算法则

以上是 int((0.1 + 0.7)* 10)= 7种几种语言。如何预防呢? 的全部内容, 来源链接: utcz.com/qa/400531.html

回到顶部