有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

双值数学Java迭代器

我试图将I的值从1迭代到0或从0迭代到1。但我有点问题。 请检查以下代码:

double i = 1.0;
loop{  // Just use a loop to iterate the i. This is just a pseudocode. 
       // We can use while-loop or for-loop or timer. 
       // (I know there is no keyword "loop" in java)

   i -=0.1;

   if( i == 0.0){
     // stop the loop
   }
}

在上面的代码中,循环永远不会停止,因为在循环过程中,当i=0.8-0.1时,变量i将变成0.700000001。当i=0.1-0.1时,我会有很多十进制数。所以它永远不会等于0.0

如果我对我的问题描述不清楚,我向你道歉。 对于专业程序员来说,这可能是一个非常简单的问题。但我想不出来。请让我知道我做错了什么


共 (2) 个答案

  1. # 1 楼答案

    在迭代中使用整数,并对其进行适当的缩放

    i = 10;
    while (i != 0)
    {
        double d = i / 10.0;
        // do stuff with d
    
        i ;
    }
    

    即使比例因子不能用十进制表示,这也会起作用

    使用BigDecimal只适用于小数。例如,如果你想以三分之一的步数进行迭代,那就行不通了

  2. # 2 楼答案

    我建议使用BigDecimal
    我知道BigDecimal用于金融系统,而不是Double或Float,用于用小数点(即价格)来描述精确的数字

    阅读更多here