如何在Android中打印带有两位小数的双精度?

Arc*_*are 93 format double android show settext

也许这是一个愚蠢的问题,但如果没有创建方法,我无法猜测如何解决它.也许有一种"自然的方式"来做,例如在C中.这是问题所在:

我有一个var:

double a;
Run Code Online (Sandbox Code Playgroud)

而我想只显示2或3位小数.当我试图表明它时:

Text.setText("Value of a: " + String.valueOf(a));
Run Code Online (Sandbox Code Playgroud)

它给出了类似的东西:

价值a:5.234966145

我想要的只是

价值a:5.23

在不改变a的实际值的情况下,它显示了近似数字,但与实数一致.

Goz*_*Goz 192

yourTextView.setText(String.format("Value of a: %.2f", a));
Run Code Online (Sandbox Code Playgroud)


Fun*_*onk 40

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


小智 28

在使用DecimalFormat之前,您需要使用以下导入,否则您的代码将无法工作:

import java.text.DecimalFormat;
Run Code Online (Sandbox Code Playgroud)

格式化代码是:

DecimalFormat precision = new DecimalFormat("0.00"); 
// dblVariable is a number variable and not a String in this case
txtTextField.setText(precision.format(dblVariable));
Run Code Online (Sandbox Code Playgroud)

  • 您的代码显示了四舍五入的值。例如,它通过调用precision.format(2.81666666)...显示2.82。 (2认同)
  • 这是理想的行为,不是吗? (2认同)

Fen*_*nil 28

对于显示最多两个小数位的数字,有两种可能性 - 1)首先,您只想显示十进制数字(如果它在那里).例如 - i)12.10显示为12.1,ii)12.00显示为12.然后使用 -

DecimalFormat formater = new DecimalFormat("#.##"); 
Run Code Online (Sandbox Code Playgroud)

2)其次,要显示十进制数字而不管十进制数如何例如-i)12.10显示为12.10.ii)12显示为12.00.然后使用 -

DecimalFormat formater = new DecimalFormat("0.00"); 
Run Code Online (Sandbox Code Playgroud)

  • 这将格式为"0"为".00".而是使用`new DecimalFormat("0.00")`将"0"显示为"0.00" (3认同)

Rav*_*rya 16

使用这个:

DecimalFormat form = new DecimalFormat("0.00");
etToll.setText(form.format(tvTotalAmount) );
Run Code Online (Sandbox Code Playgroud)

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


Ran*_*977 5

textView2.setText(String.format("%.2f", result));
Run Code Online (Sandbox Code Playgroud)

DecimalFormat form = new DecimalFormat("0.00");
         textView2.setText(form.format(result) );
Run Code Online (Sandbox Code Playgroud)

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