如何从二进制中不能很好地发挥乘法得到精确的结果?

时间:2014-07-21 22:17:05

标签: math binary rounding

实施例: int myNumber = 3; 是System.out.print(mynumber的* 0.1);

我的输出是0.30000000000000004。我对此的理解是,不以二进制结束的数字(例如十进制的.1不以二进制结尾)会导致这种情况。但是,如果我使用我的计算器,它将只返回0.3。它只是四舍五入吗?

1 个答案:

答案 0 :(得分:0)

简单的袖珍计算器通常会在内部使用基数10算术,因此您看到的行为不是由于四舍五入。现代CPU使用base 2的原因在于它更有效地表示了他们需要处理的大量计算吞吐量。但是一个简单的袖珍计算器只需要在使用它的人进入计算时尽快进行计算。由于基数10更适合于金融或货币计算(例如参见C#'s decimal type),因此在一个简单的袖珍计算器中使用是很自然的。