如何在java中使用减法维护十进制值

时间:2015-06-01 14:05:22

标签: java double decimal

如果我这样做:

double unavailabilityInitialElement = Math.pow((1.0-availabilityInitialElementInstance), instancesUsedInitialElement);

double availabilityInitialElement = 1.0 - unavailabilityInitialElement;

我收到unavailabilityInitialElement1.0025443684293908E-20availabilityInitialElement等于1

我想要一个像unavailabilityInitialElement这样的小数值,以便显示:0.99999999999999999999899746,因为我无法估算它。当{且仅unavailabilityInitialElement小于E-24时,我可以近似它,但在这种情况下,我希望以最小可能值(例如0.99999999999999999999)近似它。

你能帮我写一下正确的代码吗? 非常感谢你

1 个答案:

答案 0 :(得分:3)

的BigDecimal

如果双精度不够好,则必须使用BigDecimal个对象进行计算。

double d = 1.0025443684293908E-20;
BigDecimal num = BigDecimal.valueOf(d);
BigDecimal result = BigDecimal.ONE.subtract(num);

System.out.println(result.toPlainString());
// 0.999999999999999999989974556315706092