繁体   English   中英

使用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。 我怎样才能做到这一点?

如果这是为了显示结果,则可以使用如下格式器:

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

在此,.2表示在小数点后显示2位数字。 有关更多选项,请尝试使用BigDecimal

您可以为此使用回合

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

尽管@CHERUKURI的建议是我真正使用的自己,但是当它为MAX_DOUBLE时,它将产生不正确的结果。

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

它有太多的方法调用,但是,它将为您提供应有的功能。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM