Java的Math.Pow()函数返回令人困惑的结果

DJ *_*mby 0 java pow

我正在使用Math.pow()函数,并具有以下代码:

double monthlyRate = (0.7d / 12);
int loanLength = 3;

double powerTest = Math.pow(1.00583, 36);
double powerResult = Math.pow((1 + monthlyRate),(loanLength * 12));
Run Code Online (Sandbox Code Playgroud)

当通过调试器运行时,值变为

powerTest => 1.2327785029794363
powerResult => 7.698552870922063
Run Code Online (Sandbox Code Playgroud)

第一个是正确的.我已经在两个赋值行上进入了Math.pow函数.对于powerTest,Math.pow的参数是double a => 1.00583 double b => 36.0

对于powerResult,它们是double a => 1.0058333333333333 double b => 36.0

我知道这是机器执行浮点数学的方式的问题,我只是不确定如何纠正它.我在计算之前尝试执行以下操作,结果不佳:

monthlyRate = Math.round(monthlyRate * 1000) / 1000;
Run Code Online (Sandbox Code Playgroud)

axt*_*avt 9

1 + monthlyRate1.0583...,不是1.00583.