0

私は UVA でプログラミングの課題を解決してきましたが、この問題が発生しました。これは本当に奇妙です。欠陥のあるコードは次のとおりです。

program WTF;
begin
  WriteLn(Trunc(2.01 * 100));
  ReadLn();
end.

明らかに、私は201asを取得する必要がありIntegerますが200、これは Double がどういうわけか正確な値を保存しないために発生します...それ2.01 = 2.00(9)は私には知られていない理由によるものです。誰かがこれを説明して解決策を提供できますか?

編集:それでも、これを修正するRound()代わりに使用するとTrunc()考えました...しかし、それでも、なぜうまくいかないのでしょうTrunc()か?

4

1 に答える 1