我是一名正在準備參加州學術會議(UIL)的高中學生。我有一個問題,我已經到處尋找,似乎無法找到答案!爲什麼打印出0.0?爲什麼1/2 == 0使用雙精度?
double d = 1/2;
System.out.println(d);
我是一名正在準備參加州學術會議(UIL)的高中學生。我有一個問題,我已經到處尋找,似乎無法找到答案!爲什麼打印出0.0?爲什麼1/2 == 0使用雙精度?
double d = 1/2;
System.out.println(d);
這是因爲數據類型。
當你做1/2
這是整數除法,因爲兩個操作數是整數,因此它解析爲零(0.5舍入爲零)。
如果您將它們中的任何一個轉換爲double,您將得到雙重結果。
double d = 1d/2;
或
double d = 1/2.0;
1和2均爲整數,所以1/2 == 0
。結果不會被轉換爲double
,直到它被分配給變量,但是到時候爲時已晚。如果你想做浮動分割,請執行1.0/2
。
這是因爲1
和2
是int
值,因此按照Java語言規範,對int
操作數的算術運算的結果也int
。結果的任何非整數部分被丟棄 - 即,小數部分被截斷,0.5
- >0
有從int
自動加寬澆鑄到double
當該值被分配給d
,但石膏上完成結果爲int
,這是一個整數0
。
如果「修復」的問題,使操作數double
之一通過添加「d」到數字文字:
double d = 1d/2;
System.out.println(d); // "0.5"
按照語言規範,算術運算的操作數的,當一個是double
,結果也是double
。
1/2 = 0的原因結果,然後結果是解析加倍。你使用int而不是double。 我認爲它應該是確定:
double d = 1/2.0;
System.out.println(d);
對不起,弱英語
謝謝你,怎麼這麼傻! –