java四舍五入到小数点后两位

问题描述 投票:0回答:5

我有号码

double num = 1.234567;

我试图只保留两位小数

num = (int)((num * 100) + 0.5) / 100.0;

但我得到的实际数字是1.230000000001。我怎样才能摆脱 0000000001 部分?

java
5个回答
2
投票

尝试十进制格式

DecimalFormat twoDp= new DecimalFormat("#.##");
Double.valueOf(twoDp.format(num));

2
投票

你不能,除非你切换到十进制基数。双精度数和浮点数没有小数位,它们有二进制位,因此您不能将它们四舍五入或截断到特定的小数位,除非值表示形式一致,即 2 的负幂。

因此,如果您要呈现结果,则必须使用

DecimalFormat
;如果您想继续使用它进行计算,则必须使用
BigDecimal

任何以将值转回浮点数结束的解决方案都是不正确的。


1
投票
String result = String.format("%.2f", num);

0
投票

试试这个..这应该可以解决问题

       Double num = //value
   num = //arithmetic


   String temp =num.toString().split("\\.")[0];
       int precision=temp.length();
       BigDecimal b =new BigDecimal(num,new MathContext(precision+2));
   System.out.println(b.doubleValue());

0
投票

11年后...这是我使用的方法:{ Math.round( * 100.0) / 100.0) }。当然,您必须将 <variable> 替换为您想要四舍五入到两位小数的浮点数或双精度数。

© www.soinside.com 2019 - 2024. All rights reserved.