4 回答

月關寶盒
TA貢獻1772條經(jīng)驗 獲得超5個贊
兩個操作數(shù)(1和3)是整數(shù),因此使用整數(shù)運算(此處除法)。將結果變量聲明為double只會導致在分割后發(fā)生隱式轉(zhuǎn)換。
整數(shù)除法當然會將除法的真實結果舍入為零。因此,結果在0.333...
這里向下舍入為0。(請注意,處理器實際上并沒有進行任何舍入,但你可以這樣想。)
另請注意,如果兩個操作數(shù)(數(shù)字)都以浮點數(shù)形式給出; 3.0和1.0,或者甚至只是第一個,然后使用浮點運算,給你0.333...
。

躍然一笑
TA貢獻1826條經(jīng)驗 獲得超6個贊
1/3
使用整數(shù)除法,因為兩邊都是整數(shù)。
你至少需要其中一個float
或者double
。
如果您在源代碼中輸入值,就像您的問題一樣,您可以這樣做1.0/3
; 這1.0
是雙重的。
如果從其他地方獲得值,您可以使用(double)
將其int
轉(zhuǎn)換為a double
。
int x = ...;int y = ...;double value = ((double) x) / y;

慕絲7291255
TA貢獻1859條經(jīng)驗 獲得超6個贊
明確地把它作為一個 double
double g = 1.0/3.0
發(fā)生這種情況是因為Java使用整數(shù)除法運算1
,3
因為您將它們作為整數(shù)常量輸入。
添加回答
舉報
0/150
提交
取消