私は UVA でプログラミングの課題を解決してきましたが、この問題が発生しました。これは本当に奇妙です。欠陥のあるコードは次のとおりです。
program WTF;
begin
WriteLn(Trunc(2.01 * 100));
ReadLn();
end.
明らかに、私は201
asを取得する必要がありInteger
ますが200
、これは Double がどういうわけか正確な値を保存しないために発生します...それ2.01 = 2.00(9)
は私には知られていない理由によるものです。誰かがこれを説明して解決策を提供できますか?
編集:それでも、これを修正するRound()
代わりに使用するとTrunc()
考えました...しかし、それでも、なぜうまくいかないのでしょうTrunc()
か?