使用 double 时限制 Java 中的小数位数

Limit decimal digits in Java when using double

我有几个变量,都是 int,我用它们做了这个操作:

percentage = ((double)100) - (((double)100)/(((double)64)*((double)dist.size()-1))*((double)bestDist));

强制将它们加倍,因为我想计算一个百分比。问题是(当然)我得到像 65.88841666666666 这样的结果,我想得到一个只有 2 位十进制数字的数字,我不介意近似它,我也可以削减所有数字所以我会得到 65.88 而不是65.89。我该怎么做?

你可以为此使用 round

double roundedPercentage = (double) Math.round(percentage * 100) / 100;

如果这是为了显示结果,您可以使用像这样的格式化程序:

String formatted = String.format("%.2f", 65.88888);

这里.2表示显示小数点后2位。如需更多选项,请尝试 BigDecimal

虽然@CHERUKURI建议的是我自己真正使用的,但是在MAX_DOUBLE时会产生不准确的结果。

Math.ceil(percentage) + Math.ceil((Math.ceil(percentage) - percentage) * 100)/100.0;

它有太多的方法调用,但是,它会给你它应该给你的。

如果数字很小,那么以下就足够了:

(double) Math.round(percentage * 100) / 100;