1、情景展示:
double d = 1 / 10;
System.out.println(d);
得到的結果竟然是0.0,這是怎么回事?
2、原因分析:
第一步、你會發現用運算結果也可以用int類型接收!
int i = 1 / 10;
System.out.println(i); // 0
得到結果為0,也就是說:
在java中,整數之間的除法運算,不管小數位有多少位,小數是幾,統統舍棄,只返回整數位數字!
第二步、再看下面兩個:
long l = 1 / 10;
float f = 1 / 10;
表明用long類型和float類型也可以接受
第三步,為什么整數間的除法運算,只返回整數位?
因為在Java中,由運算結果,由被運算數的最高數據類型決定,也就是說:整數之間的運算,數據類型都為int類型,所以,返回的結果也為int類型。
3、解決方案
如果我們想要返回完整的運算結果 ,我們就需要將其中一個的數據類型轉換成double類型或者float類型,而不是只改變接收運算結果的數據類型!
方式一:將被除數轉換成double類型
double d = 256d / 10;
System.out.println(d); // 25.6
方式二:將除數轉換成double類型
double d = 256 / 10d;
System.out.println(d); // 25.6
方式三:將被除數轉換成float類型
float f = 256f / 10;
System.out.println(f); // 25.6
方式四:將除數轉換成float類型
float f = 256 / 10f;
System.out.println(f); // 25.6
連續運算
int i = 1234567 / 1000 / 36;
float f = 1234567f / 1000 / 36;
System.out.println(i); // 34
System.out.println(f); // 34.29353