nik*_*kel 1 c floating-point printf scanf rounding
你如何解释这里发生的舍入?我认为将浮点值赋给Int的总是会导致十进制后的值丢失?
int z=39.99999999999999999999999;
printf("%d",z); // gives 40
Run Code Online (Sandbox Code Playgroud)
谢谢
你不能有足够精确的双倍来容纳所有这些9.
>>> '%.15f' % 39.9999999999999
'39.999999999999901'
>>> '%.15f' % 39.99999999999999
'39.999999999999993'
>>> '%.15f' % 39.999999999999999
'40.000000000000000'
Run Code Online (Sandbox Code Playgroud)