double
public class DoubleTest { public static void main(String[] args) { double d = 0.1d; double sum =0.0d; for (int i = 1; sum < 1 ;i++) { sum = sum + d; System.out.println(i + "\t" + sum); } } }
<結果>10回足しても"1"になんないんだよなー
1 0.1 2 0.2 3 0.30000000000000004 4 0.4 5 0.5 6 0.6 7 0.7 8 0.7999999999999999 9 0.8999999999999999 10 0.9999999999999999 11 1.0999999999999999
float
public class FloatTest { public static void main(String[] args) { float f = 0.1f; float sum =0.0f; for ( int i = 1 ; sum < 1 ; i++ ) { sum = sum + f; System.out.println(i + "\t" + sum); } } }
<結果>でもやっぱ"1"じゃないのね
1 0.1 2 0.2 3 0.3 4 0.4 5 0.5 6 0.6 7 0.70000005 8 0.8000001 9 0.9000001 10 1.0000001