クラスはそれ自体を物語っています。このコードを実行すると、double 値が多少オーバーフローするように見えますが、すべての値で発生するわけではありません。さらに、数値を直接出力すると、出力は問題ありません。
public class test {
public static void main(String[] args){
for (double f=1.36; f<1.40; f+=0.01) System.out.println(f);
//Prints 1.36
// 1.37
// 1.3800000000000001 ???????
// 1.3900000000000001 ???????
System.out.println(1.36); //Prints 1.36
System.out.println(1.37); //Prints 1.37
System.out.println(1.38); //Prints 1.38
System.out.println(1.39); //Prints 1.39
}
}
誰かが光を当てることができますか?これがバグである場合、コードで修正する最善の方法は何ですか?? 魔法の回避策はありますか?