原始類型的轉換最常用於將浮點值轉換爲整數。當我們這樣做時,浮點值的小數部分被簡單地截斷。爲什麼?爲什麼鑄造原始數據類型會截斷浮點值?
public class Chaz {
public static void main(String[] args) {
double x = 1234.5678;
long g = (long)x;
System.out.println(g);
}
}
原始類型的轉換最常用於將浮點值轉換爲整數。當我們這樣做時,浮點值的小數部分被簡單地截斷。爲什麼?爲什麼鑄造原始數據類型會截斷浮點值?
public class Chaz {
public static void main(String[] args) {
double x = 1234.5678;
long g = (long)x;
System.out.println(g);
}
}
long
代表長整數。我知道問題是數據丟失,但整數不能存儲非整數。
一個可以決定存儲數目的乘積,像這樣:
public class Chaz {
public static void main(String[] args) {
double x = 1234.5678;
long g = (long)(x * 10000);
System.out.println(g);
}
}
,然後知道g
實際上10000X是真正的價值。或者如果需要最近的整數,可以將其舍入。沒有額外的信息我們就無法分辨,但我們實際上可以告訴的是,這是一種正常和預期的行爲。
因爲long是整數,所以它不能保持浮點數 –
你究竟在問什麼?你在問爲什麼長不能有小數部分?或者你問爲什麼它總是被截斷(=四捨五入),而不是四捨五入,四捨五入或更高,或者在必須輪迴時拋出異常? –