使用double时限制Java中的十进制数字
我有几个变量,都是int,我用它们做这个操作:使用double时限制Java中的十进制数字,java,double,Java,Double,我有几个变量,都是int,我用它们做这个操作: percentage = ((double)100) - (((double)100)/(((double)64)*((double)dist.size()-1))*((double)bestDist)); 强迫他们加倍,因为我想计算一个百分比。问题是(当然)我得到的结果是65.888416666666,我想得到一个只有两个十进制数字的数字,我不介意近似,我也可以删掉所有数字,所以我得到的是65.88,而不是65.89。我怎样才能做到这一点呢?你
percentage = ((double)100) - (((double)100)/(((double)64)*((double)dist.size()-1))*((double)bestDist));
强迫他们加倍,因为我想计算一个百分比。问题是(当然)我得到的结果是65.888416666666,我想得到一个只有两个十进制数字的数字,我不介意近似,我也可以删掉所有数字,所以我得到的是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\u DOUBLE时,会产生不准确的结果
Math.ceil(percentage) + Math.ceil((Math.ceil(percentage) - percentage) * 100)/100.0;
它有太多的方法调用,但是,它将为您提供它应该提供的
如果这个数字很小,那么下面就足够了:
(double) Math.round(percentage * 100) / 100;
是否确实要将
百分比的值更改为仅保留小数点后的两位数字,还是只显示小数点后的前两位数字?可能重复