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

3
于 2013-08-07T21:21:17.910 回答