2011-02-08 61 views

回答

78

因爲轉換爲浮動發生在分割完成後。您需要:

float percentage = ((float) totalOptCount)/totalRespCount; 

您應該能夠使用類似的格式:

String str = String.format("%2.02f", percentage); 
+0

Float(百分比))在此Float中顯示錯誤 – kiran 2011-02-08 10:48:14

+0

String str = String.format(「%2.02f」,(float)percentage);像這樣改變。它的工作,謝謝解開 – kiran 2011-02-08 10:57:53

1
String.format("%2.02f", (float)totalOptCount/totalRespCount); 
+0

是它存儲,在哪個變量 – kiran 2011-02-08 10:34:34

2

整數除法(包括長,短,字節,CHAR,INT)在Java中總是返回int(或long,如果其中一個參數很長),向零舍入。此計算後您的轉換髮生。

(格式化的問題已經被其他的答案回答 - 或者你也可以看看java.text.NumberFormat中,特別是java.text.DecimalFormat中。)

8

如果使用int值,使用double可能是更好的選擇,並且舍入誤差更小。 float可以代表int的值,不會出現錯誤高達1600萬。 double可準確表示所有int值。

double percentage =(double) totalOptCount/totalRespCount; 

百分比通常乘以100,這意味着你可以刪除的演員。

double percentage = 100.0 * totalOptCount/totalRespCount; 
1

格式化一張雙人牀和打印出一個百分比,可以使用使用

System.out.println(new DecimalFormat("##.##").format(yourDouble) + "%")); 
0

(totalOptCount/totalRespCount)

這裏既有被除數和除數是int型的,這意味着他們將只允許整數值,這個方程的答案將總是一個整數文字。

,如果我打破這個它會像下面

(double)(500/1500)

根據實際計算,一千五百分之五百會給你0。33333,但是編譯器將其轉換成整數文字,因爲兩個操作數是int類型的

(double)(0)


編譯得到的指令來施放此0值加倍,這樣你有0.0作爲結果

0.0

然後您可以將結果更改爲@Zach Janicki提供的任何格式。

請記住,如果兩個操作數的類型相同,結果也是相同的類型。

相關問題