我知道计算机不能精确地表示非整数。所以当我在java中添加2个双打时:
724.64d + 1000d
控制台打印出 1724.6399999999999
724.64d + 100d
但为什么724.64d + 10000d
控制台分别打印出 824.64 和 10724.64?
有没有办法知道当我添加 2 个双打时在什么条件下,总和是确切的数字?
我问的原因是因为我们的旧程序使用 double 进行计算。并使用双重比较来验证数字。例如:假设总数为1849.64
,所有输入量加起来必须等于总数,即1849.64
input 1: 724.64
input 2: 1125
将不起作用,因为总和将为 1849.6399999999999
但是如果我们像下面这样输入就可以了,总和是 1849.64
input 1: 24.64
input 2: 1825
那么如何找到那些有效的组合呢?请注意,我无权访问这个特定的非常旧的程序。当验证失败时,我们必须像第二个输入组合一样手动找到一个走动。谢谢。