你如何解释这里发生的舍入?我认为将浮点值赋给Int总是会导致小数后的值丢失?
int z=39.99999999999999999999999;
printf("%d",z); // gives 40
由于
答案 0 :(得分:6)
你不能有足够精确的双倍来容纳所有那些9。
>>> '%.15f' % 39.9999999999999
'39.999999999999901'
>>> '%.15f' % 39.99999999999999
'39.999999999999993'
>>> '%.15f' % 39.999999999999999
'40.000000000000000'
答案 1 :(得分:-1)