1 public class TestFloatOrDouble { 2 3 public static void main(String[] args) { 4 Point num1 = new Point(84, 250); 5 Point num2 = new Point(21, 10); 6 7 float f1 = (num1.y - num2.y) / (num1.x - num2.x); 8 float f2 = (float) (num1.y - num2.y) / (num1.x - num2.x); 9 10 double d1 = (num1.y - num2.y) / (num1.x - num2.x); 11 double d2 = (double)(num1.y - num2.y) / (num1.x - num2.x); 12 13 System.out.println(f1); 14 System.out.println(f2); 15 16 System.out.println(d1); 17 System.out.println(d2); 18 } 19 } 20 21 class Point{ 22 int x; 23 int y; 24 25 public Point(int x,int y){ 26 this.x = x; 27 this.y = y; 28 } 29 }
輸出:
3.0 3.8095238 3.0 3.8095238095238093
這里開始有點想不通為什么第一個是3.0第二個是3.8....
這里其實是f1的結果生成順序是,(num1.y - num2.y) / (num1.x - num2.x)兩個整型相除,得到的是一個整型,暫時假設為int result,然后再將result轉換成float類型,所以就出現了3.0
f2的結果生成順序是,(float)(num1.y - num2.y)先將第一個數轉換成float型,然后用float和int相除,得到的是float型