我正在尝试编写一个程序,其中将初始双精度乘以0.175后返回一个四舍五入到最接近的百分数的值,例如895 * 0.175 = 156.62,而不是156.625。
答案 0 :(得分:1)
java.lang.Math.floor
向下舍入到最接近的整数。所以:
Math.floor(100 * n) / 100.0;
应该做你想要的。它将数字n
乘以100以截断正确的数字,然后除以100.0以撤消原始乘法。可能不是最好的方法,但是下限和乘法/除法很快。
答案 1 :(得分:0)
您可以先将double变量转换为2进制的字符串表示形式,然后将字符串解析回double。
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.CEILING); //Set to RoundingMode.DOWN to round down
String result = df.format(895 * 0.175);
double product = Double.parseDouble(result);
System.out.println(product);