2013-11-25 60 views
-3

我有一個浮點值,我需要逗號後只有兩個小數。我使用此代碼:如何用float返回兩個小數?

public static float getWhatINeed() { 
    StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath()); 
    float total = 
     ((float)statFs.getBlockCount() * statFs.getBlockSize())/(1073741824); 
    return total; 
} 

,並返回例如:在一個TextView 12.552425。我需要顯示這樣的東西:12.55這對我來說就夠了。我看到這個:

String s = String.format("%.2f", 1.2975118); 

某處,但我不能在我的情況下使用它,因爲我使用浮點值,我需要使用浮動。我怎麼能解決這個問題?

+0

似乎duplilcate http://stackoverflow.com/questions/8911356/whats-the-best-practice-to的 - 浮點數爲2的小數點 –

+0

這裏[將浮點數舍入爲2位小數的最佳做法是什麼?](http://stackoverflow.com/questions/8911356/whats-the-best-practice-to -round-A-float到-2-小數)。 – Sajmon

回答

0

你嘗試:

new DecimalFormat("00.00").format(1.2975118); 
-3

設置精度後,並得到爲String可以canvert它回來

float f = Float.parseFloat(YourString);

+0

這不會起作用,因爲它可能導致浮動等於「1.120000000000000000001」。這就是爲什麼「這種數據類型不應該用於精確的值,如貨幣」 –

1

浮動沒有機制來限制十進制數積分float。 A floatfloat,它有一個「無限」的小數位數。 floatString顯示可能被限制爲僅顯示特定小數位數的格式。

如果你真的需要2位小數,使用BigDecimal

你基本上有4種選擇:

  • 回報float和與事實處理有n個位小數
  • 格式爲String (這意味着如果你需要計算的話,很多字符串解析)
  • 轉換爲使用BigDecimal
  • 轉換爲使用int並假定個位代表百分之一。
+0

最好的解決方案,謝謝 –

0

您可以嘗試如下

DecimalFormat df = new DecimalFormat("0.##"); 
    float a=1.256f; 
    System.out.println(df.format(a)); 
} 

出把

1.26