2011-11-09 51 views
68

也許這是一個愚蠢的問題,但我不知道如何解決它,如果它不創建一個方法。也許有一種「自然的方式」來做到這一點,比如在C中。這裏的問題:如何在Android中打印帶有兩位小數的雙精度型?

我有一個變種:

double a; 

而且我想只有2或3位小數表現出來。當我試圖表現出來:

Text.setText("Value of a: " + String.valueOf(a)); 

它給像:

價值的:5.234966145

,我也只想

的價值:5.23

在不改變a的實際值的情況下,它顯示了近似的數字,但與實數一起使用。

+0

doubleNumber.toString()。子(0,3) – Madi

回答

155
Text.setText(String.format("Value of a: %.2f", a)); 
8

使用這一個:

DecimalFormat form = new DecimalFormat("0.00"); 
etToll.setText(form.format(tvTotalAmount)); 

注:數據必須是十進制格式(tvTotalAmount)

4
textView2.setText(String.format("%.2f", result)); 

DecimalFormat form = new DecimalFormat("0.00"); 
     textView2.setText(form.format(result)); 

...導致歐洲語言環境出現「NumberFormatException」錯誤,因爲它將結果設置爲逗號而不是點十進制 - 當textView添加到editText中的數字時發生錯誤。 這兩種解決方案在美國和英國的區域性質都非常出色。

19

在你使用,你需要的DecimalFormat使用下面的導入或您的代碼將無法正常工作:

import java.text.DecimalFormat; 

格式化的代碼是:

DecimalFormat precision = new DecimalFormat("0.00"); 
// dblVariable is a number variable and not a String in this case 
txtTextField.setText(precision.format(dblVariable)); 
+0

您的代碼示出了圓形的值。例如,它顯示2。82通過調用precision.format(2.81666666)... – anivaler

12

顯示數字高達小數點後兩位有有兩種可能性 - 1)首先,你只想顯示十進制數字,如果它在那裏。 例如 - ⅰ)12.10要被顯示爲12.1,ⅱ)12.00要被顯示爲12。然後使用 -

DecimalFormat formater = new DecimalFormat("#.##"); 

2)其次,要不論小數本。例如顯示十進制數字-i )12.10顯示爲12.10。 ⅱ)12被顯示爲12.00.Then使用 -

DecimalFormat formater = new DecimalFormat("#.00"); 
+1

這會將「0」格式化爲「.00」。 改爲使用'新的DecimalFormat(「0.00」)'將「0」顯示爲「0.00」 – PrashanD

相關問題