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



如果我这样做了:

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

我得到unavailabilityInitialElement = 1.0025443684293908E-20, availabilityInitialElement = 1

我想有一个像unavailabilityInitialElement这样的十进制值,这样它就显示为:0.99999999999999999999899746,因为我不能近似它。当且仅当unavailabilityInitialElement小于E-24时,我可以近似它,但在这种情况下,我想近似它的最小可能值(例如0.99999999999999999999)。

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

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

相关内容

  • 没有找到相关文章

最新更新