1

ここで発生する丸めをどのように説明しますか?浮動小数点値をIntに割り当てると、常に小数点以下の値が失われると思いましたか?

int z=39.99999999999999999999999;
printf("%d",z); // gives 40

ありがとう

4

2 に答える 2

6

これらすべての 9 を保持するのに十分な倍精度を持つことはできません。

>>> '%.15f' % 39.9999999999999
'39.999999999999901'
>>> '%.15f' % 39.99999999999999
'39.999999999999993'
>>> '%.15f' % 39.999999999999999
'40.000000000000000'
于 2012-04-26T07:16:40.553 に答える
-1

あなたが言うように:Cの浮動小数点から整数への変換は、小数部分を切り捨てます(破棄します)。

どのコンパイラを使用していますか? その割り当ては実行時に行われていないと思います。コンパイラの問題である可能性があります。

参考:comp.lang.c よくある質問一覧

于 2012-04-26T08:33:37.837 に答える