我正在尝试使用BigDecimal显示百分比。
例如,如果我必须这样做
double val = (9522 / total ) * 100;
System.out.println("Val is :" + val);其中总数为1200000。
我希望将计算结果显示为百分比,但由于计算结果小于0,因此无法显示百分比
我也试过了
BigDecimal decimal = new BigDecimal((9522 * 100 ) / total);
BigDecimal roundValue = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("decimal: " + decimal);
System.out.println("roundValue: " + roundValue);但结果是一样的。
我如何显示百分比,即使它是小数?
发布于 2013-02-12 10:22:57
问题是你在做整数除法。
如果你想要小数结果,你需要做浮点除法。
double val = (9522 / (double) total) * 100;将一个操作数转换为双精度数将导致Java执行正确类型的除法,而不是缺省为整数除法。
发布于 2013-02-12 10:22:32
您必须通知Java,您希望至少有一个分子或分母被视为double,以确保结果是double。
这将会起作用:
double val = ((double)9522 / total ) * 100;
System.out.println("Val is :" + val);发布于 2013-02-12 10:25:30
BigDecimal decimal =新的BigDecimal((9522 * 100 )/BigDecimal);
这不是在BigDecimal上进行操作的方式:在构造BigDecimal时,精度已经消失,因为计算(9522 * 100 ) / total是在编译时完成的。这就是为什么结果与整数是一样的:实际上,整个计算都是在整数中完成的。
下面是使用BigDecimal对象进行计算的方法:
BigDecimal decimal = new BigDecimal(9522)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(total));https://stackoverflow.com/questions/14824438
复制相似问题