int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
爲什麼總是返回值0.0?我也想格式化爲00.00格式並轉換爲字符串?爲什麼Java中的兩個整數除法返回0.0?
int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
爲什麼總是返回值0.0?我也想格式化爲00.00格式並轉換爲字符串?爲什麼Java中的兩個整數除法返回0.0?
因爲轉換爲浮動發生在分割完成後。您需要:
float percentage = ((float) totalOptCount)/totalRespCount;
您應該能夠使用類似的格式:
String str = String.format("%2.02f", percentage);
String.format("%2.02f", (float)totalOptCount/totalRespCount);
是它存儲,在哪個變量 – kiran 2011-02-08 10:34:34
整數除法(包括長,短,字節,CHAR,INT)在Java中總是返回int(或long,如果其中一個參數很長),向零舍入。此計算後您的轉換髮生。
(格式化的問題已經被其他的答案回答 - 或者你也可以看看java.text.NumberFormat中,特別是java.text.DecimalFormat中。)
如果使用int
值,使用double
可能是更好的選擇,並且舍入誤差更小。 float
可以代表int
的值,不會出現錯誤高達1600萬。 double
可準確表示所有int
值。
double percentage =(double) totalOptCount/totalRespCount;
百分比通常乘以100,這意味着你可以刪除的演員。
double percentage = 100.0 * totalOptCount/totalRespCount;
格式化一張雙人牀和打印出一個百分比,可以使用使用
System.out.println(new DecimalFormat("##.##").format(yourDouble) + "%"));
(totalOptCount/totalRespCount)
這裏既有被除數和除數是int
型的,這意味着他們將只允許整數值,這個方程的答案將總是一個整數文字。
,如果我打破這個它會像下面
(double)(500/1500)
根據實際計算,一千五百分之五百會給你0。33333,但是編譯器將其轉換成整數文字,因爲兩個操作數是int類型的
(double)(0)
編譯得到的指令來施放此0
值加倍,這樣你有0.0
作爲結果
0.0
然後您可以將結果更改爲@Zach Janicki提供的任何格式。
請記住,如果兩個操作數的類型相同,結果也是相同的類型。
Float(百分比))在此Float中顯示錯誤 – kiran 2011-02-08 10:48:14
String str = String.format(「%2.02f」,(float)percentage);像這樣改變。它的工作,謝謝解開 – kiran 2011-02-08 10:57:53