Java连续添加两个小数字会失去准确性

时间:2016-09-06 20:24:30

标签: java precision

在Java中我试图绘制点,并且每个点之间的距离非常小(0.002)。

然而,当我绘制数据时,我发现有一些“漏洞”。在线图停止的图表中再继续一点。

所以,我开始打印出X值,我注意到这是一个疯狂的小数点,比它应该更长。

它应该只是.002的倍数,而是你有以下数字:

  

1.1740000000000008

如果您手动连续添加.002,那么您将无法获得该数字。

所以,我把这个代码摘要放在一起打印出Java,将两个双打加在一起,它的输出显示出错了。

public class Test {

    public static void main(String[] args) {
        Double rate = 0.002;

        for (double x = 0.0; x < 60; x += rate) {
            System.out.println("X: " + x + " --- Rate: " + rate);
        }
    }
}
  • X:0.0 ---速率:0.002
  • X:0.002 ---速率:0.002
  • X:0.004 ---速率:0.002
  • X:0.006 ---速率:0.002
  • X:0.008 ---比率:0.002
  • X:0.01 ---速率:0.002
  • X:0.012 ---速率:0.002
  • X:0.014 ---速率:0.002
  • X:0.016 ---速率:0.002
  • X:0.018000000000000002 ---评分:0.002
  • X:0.020000000000000004 ---评分:0.002
  • X:0.022000000000000006 ---评分:0.002
  • X:0.024000000000000007 ---评分:0.002

正如您在第9次添加.002时所看到的那样,它改为添加0.002000000000000002,之后仅添加.002000000000000001。

任何人都可以向我解释这个吗?我应该如何解决它。

0 个答案:

没有答案