这就是我将双精度数转换为2位小数的方法:
amount = roundTwoDecimals(amount);
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}
Run Code Online (Sandbox Code Playgroud)
如果金额= 25.3569或类似的东西,这很好用,但如果金额= 25.00或金额= 25.0,那么我得到25.0!我想要的是舍入和格式化为2位小数.
小智 52
只需使用:(简单如馅饼)
double number = 651.5176515121351;
number = Math.round(number * 100);
number = number/100;
Run Code Online (Sandbox Code Playgroud)
输出为651.52
Mit*_*eat 19
使用数字占位符(0),与' #'尾随/前导零显示为不存在:
DecimalFormat twoDForm = new DecimalFormat("#.00");
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 19
你在用钱吗?创建一个String然后将其转换回来是非常循环的.
使用BigDecimal.这已经被广泛讨论过了.你应该有一个Money班级,金额应该是一个BigDecimal.
即使你没有用钱,也要考虑BigDecimal.
您不能 '将一个双精度值舍入到任意数量的小数位数',因为双精度数没有小数位.您可以将double转换为带有N个小数位的base-10 String,因为base-10确实有小数位,但是当你将它转换回来时,你又回到了double-land,带有二进制小数位.
小智 5
这是我能做到的最简单的事情,但它比我见过的大多数例子更容易完成工作.
double total = 1.4563;
total = Math.round(total * 100);
System.out.println(total / 100);
Run Code Online (Sandbox Code Playgroud)
结果是1.46.
| 归档时间: |
|
| 查看次数: |
215958 次 |
| 最近记录: |