为什么这些JavaScript公式输出不同(但几乎相同)的答案?

为什么这些JavaScript公式输出不同(但几乎相同)的答案?,javascript,math,Javascript,Math,因此,我试图绘制一张包含“加薪”在内的收入图表 我一年挣100美元,每年加薪1%(非复利)。图表将显示未来50年左右每年的总收入。 所以,100、201、303等等 我的问题是,为什么所有这些方程式得出的答案几乎相同,但却不准确。我猜我的逻辑可能是错的,但我已经在这上面呆了两周,看不出我的错误 结果: 126.3125 126.25694444444443 126.2152777777778 126.3125 考虑到所有的方程式都应该给出15个月的收入,我不明白为什么它们都不是126.

因此,我试图绘制一张包含“加薪”在内的收入图表

我一年挣100美元,每年加薪1%(非复利)。图表将显示未来50年左右每年的总收入。 所以,100、201、303等等

我的问题是,为什么所有这些方程式得出的答案几乎相同,但却不准确。我猜我的逻辑可能是错的,但我已经在这上面呆了两周,看不出我的错误


结果:

126.3125

126.25694444444443

126.2152777777778

126.3125

考虑到所有的方程式都应该给出15个月的收入,我不明白为什么它们都不是126.3125。任何帮助都将不胜感激。我想我只是在这里有点傻,所以请继续对我说笑。

让我们先重新安排一下您的输入,使其“干燥”

由于
time
的目的是天数(使用整月),因此传入月数,并让函数将其乘以
365/12
——在函数中它是
365/1200
,因为它还处理利率除以100的问题

计算中的本金也乘以月数,因此让我们传递这个数字,第一个是3和12,第二个是4和11,等等,函数现在也将处理这个问题-顺便说一下,这是函数中的最后一个
*m/12.0

//这将3个月的收入按1%加上12个月的收入按1%
console.log(
利息信用证(100.00,3,(1.00/365),3+
利息信用证(100.00,12,(1.00/365),15)
);
//这将收入从4个月的1%增加到11个月的1%
console.log(
利息信用证(100.00,4,(1.00/365),4+
利息信用证(100.00,11,(1.00/365),15)
);
//这将10个月的收入增加1%,再增加5个月的收入1%
console.log(
利息信用证(100.00,10,(1.00/365),10+
利息信用证(100.00,5,(1.00/365),15)
);
//这将12个月的1%收入与另外3个月的1%收入相加
console.log(
利息信用证(100.00,12,(1.00/365),12+
利息信用证(100.00,3,(1.00/365),15)
);
函数interestCalc(本金、m、利率、时间)
{
收益率(本金+(本金*利率*时间*365/1200))*m/12.0;

}
让我们先重新安排一下输入,使其“干燥”

由于
time
的目的是天数(使用整月),因此传入月数,并让函数将其乘以
365/12
——在函数中它是
365/1200
,因为它还处理利率除以100的问题

计算中的本金也乘以月数,因此让我们传递这个数字,第一个是3和12,第二个是4和11,等等,函数现在也将处理这个问题-顺便说一下,这是函数中的最后一个
*m/12.0

//这将3个月的收入按1%加上12个月的收入按1%
console.log(
利息信用证(100.00,3,(1.00/365),3+
利息信用证(100.00,12,(1.00/365),15)
);
//这将收入从4个月的1%增加到11个月的1%
console.log(
利息信用证(100.00,4,(1.00/365),4+
利息信用证(100.00,11,(1.00/365),15)
);
//这将10个月的收入增加1%,再增加5个月的收入1%
console.log(
利息信用证(100.00,10,(1.00/365),10+
利息信用证(100.00,5,(1.00/365),15)
);
//这将12个月的1%收入与另外3个月的1%收入相加
console.log(
利息信用证(100.00,12,(1.00/365),12+
利息信用证(100.00,3,(1.00/365),15)
);
函数interestCalc(本金、m、利率、时间)
{
收益率(本金+(本金*利率*时间*365/1200))*m/12.0;

}
你的数学可能没有问题。检查这个答案:实际上,@SoKeT,浮点的不精确性与此无关。您可能期望(如果代码的初始前提是正确的)可能是
0.0000000000 1
差异,而不是几乎
0.1
!请解释您的代码与问题的关系?你说年收入每年增长1%,然后你的代码将15个月分成两部分,并将0.00274%(如果年增长率为1,为什么要将1除以365)应用于这两部分(为什么这两部分包含相同的比率)!你的数学可能没有问题。检查这个答案:实际上,@SoKeT,浮点的不精确性与此无关。您可能期望(如果代码的初始前提是正确的)可能是
0.0000000000 1
差异,而不是几乎
0.1
!请解释您的代码与问题的关系?你说年收入每年增长1%,然后你的代码将15个月分成两部分,并将0.00274%(如果年增长率为1,为什么要将1除以365)应用于这两部分(为什么这两部分包含相同的比率)!
126.3125

126.25694444444443

126.2152777777778

126.3125