使用double时,限制Java中的十进制数字

时间:2015-05-20 18:25:47

标签: java double

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

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

强迫他们加倍,因为我想计算一个百分比。问题是(当然)我得到的结果如65.88841666666666,我想得到一个只有2位小数的数字,我不介意接近它,我也可以剪掉所有数字,这样我就得到65.88而不是65.89。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

如果这是用于显示结果,您可以使用格式化程序,如:

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

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

答案 1 :(得分:3)

你可以使用round来

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

答案 2 :(得分:0)

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

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

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

如果数量很小,那么以下内容就足够了:

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