我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.
我也希望只显示有效数字 - 即不应该有任何尾随零.
我知道这样做的一种方法是使用该String.format方法:
String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91239
Run Code Online (Sandbox Code Playgroud)
这很好,但它总是显示5位小数的数字,即使它们不重要:
String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91230
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DecimalFormatter:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91238
Run Code Online (Sandbox Code Playgroud)
但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:
0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)
在Java中实现这一目标的最佳方法是什么?
可能重复:
将小数点后的双精度数加到2位有效数字
我在我的应用程序中处理了很多双值,是否有任何简单的方法来处理Java中十进制值的格式?
还有其他更好的办法吗?
DecimalFormat df = new DecimalFormat("#.##");
Run Code Online (Sandbox Code Playgroud)
我想要做的基本上是格式双值
23.59004 to 23.59
35.7 to 35.70
3.0 to 3.00
9 to 9.00
Run Code Online (Sandbox Code Playgroud) 如何得到小数点后只有两位数的双精度值.
例如
如果
i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
Run Code Online (Sandbox Code Playgroud)
这段代码生成5.81403333.
但我只想要5.81.
那我该怎么办?
我有几个变量,都是 int,我用它们做这个操作:
percentage = ((double)100) - (((double)100)/(((double)64)*((double)dist.size()-1))*((double)bestDist));
Run Code Online (Sandbox Code Playgroud)
强迫它们加倍,因为我想计算一个百分比。问题是(当然)我得到像 65.88841666666666 这样的结果,我想得到一个只有 2 个十进制数字的数字,我不介意近似它,我也可以削减所有数字,所以我会得到 65.88 而不是65.89。我怎样才能做到这一点?