相关疑难解决方法(0)

如何解决Java Rounding Double问题

似乎减法正在触发某种问题,结果值是错误的.

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.

应该怎样做才能确保正确计算?

java math rounding

75
推荐指数
5
解决办法
16万
查看次数

不可预知的双倍

可能重复:
.NET上的双精度问题
Double计算产生奇数结果

我知道双重价值的内部代表0.2是类似的0.199999.但是下面的代码仍然让我感到困惑.

码:

public static void main(String[] args) {
    double d= 0.3d;
    double f= 0.1d;
    System.out.println(d+f);
    System.out.println(d*f);
    System.out.println(d);
    System.out.println(f);
    System.out.println(d-f);
    System.out.println(d/f);
    System.out.println((d-f)*(d-f));
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

0.4
0.03
0.3
0.1
0.19999999999999998
2.9999999999999996
0.039999999999999994
Run Code Online (Sandbox Code Playgroud)

实际上发生了什么?加法,乘法顺利,但减法,除法不是.任何人都可以详细说明为什么加法与减法不同

java math double operation

1
推荐指数
1
解决办法
1462
查看次数

标签 统计

java ×2

math ×2

double ×1

operation ×1

rounding ×1