2013-03-01 42 views
0

我想如下做一個非常基本的操作:Java不打印小數

double a=21/5; 
System.out.println(a); 

然而,每次我得到4.0作爲輸出,而不是4.2。我第一次遇到這個。我一直在使用Java多年,但從未遇到過這種晦澀難懂的事情。

+6

劃分是一個整數除法,所以21/5 = 4,然後澆鑄雙人,所以4.0。 – 2013-03-01 16:24:07

+0

@SotiriosDelimanolis:顯然!該死的我的大腦。感謝您拯救它。 – xan 2013-03-01 16:25:39

+1

@SotiriosDelimanolis:這是一個*答案*,而不是評論。一個我已經投票了。 :-) – 2013-03-01 16:26:17

回答

5

您使用整數除法,其結果總是整數 你應該使用這樣的事情。

double a=(double)21/5; 
0

鑄造師或指定的參數之一爲十進制迫使回報爲雙:

double a = (double)21/5; 

- 或 -

double a = 21.0/5; 
0

只投其中一個號碼加倍:

double a = 21/5.0; 
1

你在做整合呃......師

嘗試:

double a = 21.0/5; 
0

強制投翻番。 double a = 21.0/5

這就是所謂的算術推廣。這意味着方程中的所有項都等於最高精度的變量類型。在這種情況下,雙重。