第一種錯誤思路: package 第三天_練習題; //計算0.01+0.02+0.03+......+1.0 = ? 的值 public class Test8 { public static void main(String[] args) { double sum=0.0; for(double d=0.01;d<=1.0;d=d+0.01) { sum=sum+d; } System.out.println("用double類型的for循環求出的和\nsum="+sum); } }用double類型的for循環求出的和
sum=49.50000000000003
第二種錯誤思路:
package 第三天_練習題; //計算0.01+0.02+0.03+......+1.0 = ? 的值 public class Test8 { public static void main(String[] args) { double sum=0.0; float sum2=0.0f;//注意這個要加f,因為默認的是double型的,不然要強轉(float)。 for(float d=0.01f;d<=1.0f;d=d+0.01f) { sum=sum+d; } System.out.println("用float類型的for循環求出的和\nsum="+sum); } } 用float類型的for循環求出的和 sum=50.499976608902216第三種才是正確的思路
package 第三天_練習題; //計算0.01+0.02+0.03+......+1.0 = ? 的值 public class Test8 { public static void main(String[] args) { double sum=0.0; double d=0.01; double newSum=0.0; for(int i=0;i<100;i++) { sum=sum+d; newSum=(int)(sum*100.0)/100.0; d=d+0.01; } System.out.println(newSum); } }