ここで発生する丸めをどのように説明しますか?浮動小数点値をIntに割り当てると、常に小数点以下の値が失われると思いましたか?
int z=39.99999999999999999999999;
printf("%d",z); // gives 40
ありがとう
ここで発生する丸めをどのように説明しますか?浮動小数点値をIntに割り当てると、常に小数点以下の値が失われると思いましたか?
int z=39.99999999999999999999999;
printf("%d",z); // gives 40
ありがとう
これらすべての 9 を保持するのに十分な倍精度を持つことはできません。
>>> '%.15f' % 39.9999999999999
'39.999999999999901'
>>> '%.15f' % 39.99999999999999
'39.999999999999993'
>>> '%.15f' % 39.999999999999999
'40.000000000000000'
あなたが言うように:Cの浮動小数点から整数への変換は、小数部分を切り捨てます(破棄します)。
どのコンパイラを使用していますか? その割り当ては実行時に行われていないと思います。コンパイラの問題である可能性があります。