Java 双舍入始终为 2 位小数
我正在尝试将双精度值四舍五入为2位十进制数字,但是它并非在所有情况下都有效
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
public static void main(String[] args) {
System.out.println(round(25.0,2)); //25.0 - expected 25.00
System.out.println(round(25.00d,2)); //25.0 - expected 25.00
System.out.println(round(25,2)); //25.0 - expected 25.00
System.out.println(round(25.666,2)); //25.67
}
简而言之,无论十进制是否存在,即使需要填充额外的零,也要始终将值保持在十进制数2以下。
任何帮助是值得赞赏的!