如何在 java 中通过减法保持小数值
How to maintain decimal values with subtractions in 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
如果我这样做:
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