3 回答

TA貢獻1816條經驗 獲得超6個贊
算術中的所有操作數(shù)都不是浮點數(shù)-因此所有操作均使用整數(shù)算術完成,然后轉換為浮點數(shù)。如果將適當?shù)牟僮鲾?shù)的類型更改為浮點數(shù),則可以正常工作:
float div = ((360 / 24f) / 60); // div is now 0.25
請注意,如果僅將60更改為浮點數(shù),則最終會將360/24作為整數(shù)算術執(zhí)行-在這種情況下可以使用,但不代表我真正的意圖?;旧?,您需要確保以所需的方式執(zhí)行算術運算。

TA貢獻1783條經驗 獲得超4個贊
您實際上是在做整數(shù)除法(JLS 15.17.2)。
float div = ((360 / 24) / 60);
float div = (float) ((360 / 24) / 60);
float div = (float) (15 / 60);
float div = (float) (0);
float div = 0F;
要進行浮點除法,至少一個操作數(shù)必須是浮點數(shù)字類型。
float div = ((360F / 24) / 60);
float div = 15F / 60;
float div = 0.25F;
提示:如果精度很重要double,則在轉換為之前,您需要使用和進行盡可能多的計算float。實際上,除非您的分析表明您絕對需要,否則您float應該始終選擇double。
float f;
f = (1E-17F * 1E-17F);
System.out.println(f); // prints "9.999999E-35"
f = (float) (1E-17D * 1E-17D);
System.out.println(f); // prints "1.0E-34"

TA貢獻1873條經驗 獲得超9個贊
在您的主要方法中
public static void main(String[] args){
float div = ((360 / 24) / 60);
System.out.println(div);
}
注意360、24和60都是整數(shù)值。這樣,您將獲得怪異的值。
360/24-> 15(非常好)
15/60-> 0.4(浮點)
不幸的是,對于您來說,浮點數(shù)被截斷了,因此您得到:
-> 0 (integer value)
然后,通過將0賦給浮點變量,可以將0更改為浮點值0.0。因此結果。
如果要劃分它們,則需要將它們更改為浮點值。
正確的代碼應如下所示:
public static void main(String[] args){
float div = ((360.0 / 24.0) / 60.0);
System.out.println(div);
}
添加回答
舉報