在for循环的最后一次迭代上打印

0 java for-loop

所以我有一个简单的for循环:

  double bg = 5.0;
  double f = 0.0;
  for(double i = 0; i <= bg; i += 1)
    {
        f = f + ((2 * i + 1)*0.1);

        if(i == bg)
        {
            System.out.printf ("%.1f" , f);
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我为每次增加1增加时,它工作正常.但是,当我做+ + = 0.1时,它不会打印f.有什么想法吗?

Igo*_*gor 5

你无法比较那样的花车.

通常使用类似的东西检查两个浮点数(双精度数)的相等性

if(Math.abs(i - bg)<0.00001f)//0.00001f是非常小的值 - 几乎为零,选择此值以满足您的需要

有关更多信息,请访问http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

你的代码应该是这样的

  double bg = 5.0;
  double f = 0.0;
  for(double i = 0; i <= bg; i += 1)
    {
        f = f + ((2 * i + 1)*0.1);

        if (Math.abs(i - bg) < 0.00001f)
        {
            System.out.printf ("%.1f" , f);
        }
    }
Run Code Online (Sandbox Code Playgroud)