似乎减法正在触发某种问题,结果值是错误的.
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
Run Code Online (Sandbox Code Playgroud)
78.75 = 787.5*10.0/100d
double netToCompany = targetPremium.doubleValue() - tempCommission;
Run Code Online (Sandbox Code Playgroud)
708.75 = 787.5 - 78.75
double dCommission = request.getPremium().doubleValue() - netToCompany;
Run Code Online (Sandbox Code Playgroud)
877.8499999999999 = 1586.6 - 708.75
由此产生的预期值为877.85.
应该怎样做才能确保正确计算?
任何人都可以向我解释为什么9999999999999999被转换为10000000000000000?
alert(9999999999999999); //10000000000000000
Run Code Online (Sandbox Code Playgroud)
我知道有精确错误的怪异东西,但我无法理解,
为什么(long)9223372036854665200d要给我9223372036854665216?