內部劃分:為什么1/3 == 0的結果?我寫的是這段代碼:public static void main(String[] args) {
double g = 1 / 3;
System.out.printf("%.2f", g);}結果是0.為什么這樣,我該如何解決這個問題?
4 回答

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

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

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