java怎么打复杂的数学公式_数学公式带来的麻烦-Java

我正在为我的Java类编写一个程序,该程序以给定的开始年份(2011)计算一年的人口,并以每年1.2%的速度增加人口. 2011年的人口为7.000(我使用的是小数,而不是十亿).我目前有此代码.

int startYear = 2011;

int endYear = user_input.nextInt();

double t = 1.2; //Population percent increase anually

double nbr = (endYear - startYear); //Number of years increased

double pStart = 7.000; //Starting population of 2011

double pEnd = pStart * Math.exp(nbr * t); // Ending population of user input

DecimalFormat nf = new DecimalFormat("2");

System.out.println("Population in " + endYear + ": " (nf.format(pEnd)));

代码中没有错误,一切正常,但是我在使用pEnd公式时遇到了麻烦.目前,当我输入2016年作为结束年度时,我得到22824.我尝试使用谷歌搜索公式,但找不到任何东西.你们中的任何一个都对公式有想法吗?如果输入2016作为结束年度,则应该在7.433左右

解决方法:

使用Math.pow(1 t / 100,nbr)代替Math.exp(nbr * t),因为您需要(1 t / 100)^ nbr(即,将1 t / 100乘以nbr倍),而不是exp ^( nbr * t):

double pEnd = pStart * Math.pow(1 + t / 100, nbr); // Ending population of user input

标签:eclipse,java,math

来源: https://codeday.me/bug/20191118/2025473.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值