首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java的Math.Pow()函数返回令人困惑的结果

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

Stack Overflow用户
提问于 2011-01-26 00:45:17
回答 7查看 4.3K关注 0票数 0

我正在使用Math.pow()函数,并编写了以下代码:

代码语言:javascript
复制
double monthlyRate = (0.7d / 12);
int loanLength = 3;

double powerTest = Math.pow(1.00583, 36);
double powerResult = Math.pow((1 + monthlyRate),(loanLength * 12));

当通过调试器运行此操作时,这些值将变为

代码语言:javascript
复制
powerTest => 1.2327785029794363
powerResult => 7.698552870922063

第一个是正确的。我已经单步执行了两个赋值行上的Math.pow函数。对于powerTest,Math.pow的参数为双a => 1.00583双b => 36.0

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

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

代码语言:javascript
复制
monthlyRate = Math.round(monthlyRate * 1000) / 1000;
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-01-26 00:48:54

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

票数 9
EN

Stack Overflow用户

发布于 2011-01-26 00:50:23

您的表达式0.7d/12 = 0.0583,在powerTest表达式中使用0.00583。

票数 3
EN

Stack Overflow用户

发布于 2011-01-26 00:50:14

我认为问题的一部分是0.7/12 ~ 0.0583331.0583 > 1.00583。我敢打赌,这是你的差异的真正来源,浮点调整与此关系不大。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4796314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档