112

也许这是一个愚蠢的问题,但如果它不创建方法,我无法猜测如何解决它。也许有一种“自然的方式”可以做到这一点,例如在 C 中。这是问题所在:

我有一个变量:

double a;

我只想用 2 或 3 位小数显示它。当我尝试展示它时:

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

它给出了类似的东西:

a的值:5.234966145

我只想

a的值:5.23

在不更改 a 的实际值的情况下,它显示近似数字但适用于实数。

4

6 回答 6

223
yourTextView.setText(String.format("Value of a: %.2f", a));
于 2011-11-09T12:39:34.473 回答
47

您可以使用DecimalFormat,或String.format("%.2f", a);

于 2011-11-09T12:40:36.657 回答
45

对于显示最多两位小数的数字,有两种可能性 - 1)首先,如果存在小数位,您只想显示小数位。例如 - i) 12.10 显示为 12.1,ii) 12.00 显示为 12。然后使用 -

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

2) 其次,您希望显示十进制数字,而不管小数是否存在 例如 -i) 12.10 显示为 12.10。ii) 12 显示为 12.00。然后使用-

DecimalFormat formater = new DecimalFormat("0.00"); 
于 2016-01-07T13:33:24.310 回答
34

在使用 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));
于 2014-08-08T17:15:29.357 回答
22

使用这个:

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

注意:数据必须是十进制格式(tvTotalAmount)

于 2014-01-02T13:22:35.947 回答
7
textView2.setText(String.format("%.2f", result));

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

...在欧洲的语言环境中导致“NumberFormatException”错误,因为它将结果设置为逗号而不是小数点 - 将 textView 添加到 editText 中的数字时会发生错误。这两种解决方案在美国和英国地区都运行良好。

于 2014-07-25T21:51:19.477 回答