十进制后只显示两位数

URA*_*oid 84 java android number-formatting

如何得到小数点后只有两位数的双精度值.

例如

如果

i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
Run Code Online (Sandbox Code Playgroud)

这段代码生成5.81403333.

但我只想要5.81.

那我该怎么办?

Sub*_*der 170

使用DecimalFormat.

DecimalFormat是NumberFormat的具体子类,用于格式化十进制数.它具有多种功能,旨在解析和格式化任何语言环境中的数字,包括支持西方,阿拉伯语和印度语数字.它还支持不同类型的数字,包括整数(123),定点数(123.4),科学记数法(1.23E4),百分比(12%)和货币金额(123美元).所有这些都可以本地化.

代码段 -

double i2=i/60000;
tv.setText(new DecimalFormat("##.##").format(i2));
Run Code Online (Sandbox Code Playgroud)

输出 -

5.81

  • 它按照我的要求大部分工作.但在我的情况下,我需要小数点后的单位数.因此使用像 - 新的DecimalFormat("##.#"),但是,它不适用于小数点后像0 35的情况,因为它显示它**35**.但是,我需要像**35.0**这样的东西 (4认同)
  • 字符串amt = new DecimalFormat(“ ##。##”)。format(448.4); ->仅给出448.4字符串amt = new DecimalFormat(“ ##。00”)。format(448.4); ->其给出448.40 (3认同)
  • 如果我想要双格式怎么办? (2认同)

dum*_*azy 119

怎么样String.format("%.2f", i2)

  • 这可能会使用逗号格式化字符串,具体取决于区域设置,例如result = 5,32而不是5.32. (6认同)
  • 我使用了`String.format(Locale.US, "%.2f", i2)` (3认同)
  • 输入比十进制格式少得多,lmao.谢谢. (2认同)

Pir*_*hah 26

在这里,我将向您展示如何使您的小数不短,这里我将它缩短为小数后的4值.

   double value = 12.3457652133
  value =Double.parseDouble(new DecimalFormat("##.####").format(value));
Run Code Online (Sandbox Code Playgroud)

  • 工作良好无错误 (2认同)

Ser*_*kyi 10

我认为最好最简单的解决方案是(KISS):

double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是不可能的!因为Math.round - 返回整数,我们将它转​​换为浮点值.除以100后的浮点值(581.0)如何可以是5.81000000001?你有描述你意见的测试用例吗? (3认同)

Pra*_*ire 10

double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);
Run Code Online (Sandbox Code Playgroud)


MAC*_*MAC 5

i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##"); 
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
Run Code Online (Sandbox Code Playgroud)