unavailabilityInitialElement

unavailabilityInitialElement

如果我做:

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

double availabilityInitialElement = 1.0 - unavailabilityInitialElement;


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

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

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

最佳答案

大十进制

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

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

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

10-06 09:33