双值数学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
如果我对我的问题描述不清楚,我向你道歉。 对于专业程序员来说,这可能是一个非常简单的问题。但我想不出来。请让我知道我做错了什么
# 1 楼答案
在迭代中使用整数,并对其进行适当的缩放
即使比例因子不能用十进制表示,这也会起作用
使用
BigDecimal
只适用于小数。例如,如果你想以三分之一的步数进行迭代,那就行不通了# 2 楼答案
我建议使用BigDecimal
我知道BigDecimal用于金融系统,而不是Double或Float,用于用小数点(即价格)来描述精确的数字
阅读更多here