- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我正在尝试绘制一段时间内的收入图表,其中包括“加薪”。
例如。我一年赚 100 美元,每年加薪 1%(非复利)。该图表将显示 future 50 年左右每年的总收入。所以,100、201、303 等等。
我的问题是,为什么所有这些方程都得出几乎相同但不精确的答案。我猜我的逻辑可能是错误的,但我已经坚持了大约两周,看不到我的错误。
<小时/>//This adds the income from 3 months at 1% to another 12 months at 1%
console.log(interestCalc(100.00 * (3.00/12), (1.00/365), ((365.00/12) * 3)) + interestCalc(100.00, (1.00/365), ((365.00/12) * 3) + 365));
//This adds the income from 4 months at 1% to another 11 months at 1%
console.log(interestCalc(100.00 * (4.00/12), (1.00/365), ((365.00/12) * 4)) + interestCalc(100.00 * (11.00/12), (1.00/365), ((365.00/12) * 4) + ((365.00/12) * 11)));
//This adds the income from 10 months at 1% to another 5 months at 1%
console.log(interestCalc(100.00 * (10.00/12), (1.00/365), ((365.00/12) * 10)) + interestCalc(100.00 * (5.00/12), (1.00/365), ((365.00/12) * 10) + ((365.00/12) * 5)));
//This adds the income from 12 months at 1% to another 3 months at 1%
console.log(interestCalc(100.00, (1.00/365), 365) + interestCalc(100.00 * (3.00/12), (1.00/365), 365 + ((365.00/12) * 3)));
function interestCalc(principal, interestRate, time)
{
interestRate = interestRate * 0.01;
return principal + (principal * interestRate * time);
}
-------------------------------------------------------------------
结果:
126.3125
126.25694444444443
126.2152777777778
126.3125
考虑到所有方程都应该给出 15 个月时间段的收入,我不明白为什么它们都不是 126.3125。任何帮助将不胜感激。我想我只是在这里有点愚蠢,所以继续攻击我吧哈哈。
最佳答案
让我们先重新排列一下您的输入并使其“干燥”
由于time
的目的是天数(使用整个月),因此传入月数,并让函数将其乘以365/12
- 在函数中它是 365/1200
因为它还可以处理利率除以 100
计算中的本金也乘以月份数,因此让我们传递这个数字,第一个数字为 3 和 12,第二个数字为 4 和 11,依此类推,该函数现在也将处理该数字 - 这是最后一个顺便说一下,函数中的* m/12.0
//This adds the income from 3 months at 1% to another 12 months at 1%
console.log(
interestCalc(100.00, 3, (1.00/365), 3) +
interestCalc(100.00, 12, (1.00/365), 15)
);
//This adds the income from 4 months at 1% to another 11 months at 1%
console.log(
interestCalc(100.00, 4, (1.00/365), 4) +
interestCalc(100.00, 11, (1.00/365), 15)
);
//This adds the income from 10 months at 1% to another 5 months at 1%
console.log(
interestCalc(100.00, 10, (1.00/365), 10) +
interestCalc(100.00, 5, (1.00/365), 15)
);
//This adds the income from 12 months at 1% to another 3 months at 1%
console.log(
interestCalc(100.00, 12, (1.00/365), 12) +
interestCalc(100.00, 3, (1.00/365), 15)
);
function interestCalc(principal, m, interestRate, time)
{
return (principal + (principal * interestRate * time * 365 / 1200)) * m / 12.0;
}
这输出与您的代码相同(除了最低有效数字,因为操作顺序以及 JavaScript 中的浮点与任何其他浮点一样 - 但这对于问题来说无关紧要)
现在,让我们简化一下
删除常量,因为它们是...常量
function interestCalc(principal, m, interestRate, time)
{
return (principal + (principal * interestRate * time)) * m;
}
由于 interestRate
和我编写它的方式 principal
始终相同,因此删除它们
function interestCalc(principal, m, interestRate, time)
{
return time * m;
}
所以,现在的结果是
3 * 3 + 12 * 15 === 189
4 * 4 + 11 * 15 === 181
10 * 10 + 5 * 15 === 175
12 * 12 + 3 * 15 === 189
如果您认为所有 4 个结果都相同,那么您的计算就有缺陷
很明显,两个匹配的计算实际上也是错误的
话虽如此,我还没有尝试找出正确的公式,因为我不太确定你想要实现什么
再次阅读问题后,我看不出您的代码与您想要实现的目标有何关系
I'm assuming this is what you wanted to do - that you want to calculate wages when an increase happens after 3, 4, 10 or 12 months - i.e. the wage increase could be part way into the year
如果不增加,15 个月内每年 100 就是 100 * 15/12 = 125
因此,每次分割应产生高于 125 的值(因为增加),但随着您在较低速率下有更多时间,这些值将变得更接近 125
您预计 15 个月内的最大值为前 3 个月 25 加上接下来 12 个月的 101
最低为 12 个月 100 + 3 个月 101/4 25.25,总共 125.25
因此,所有计算结果必须介于 125.25 和 126.00 之间
使用上面的代码,并更改 interestCalc
函数:
console.log(
interestCalc(100.00, 3, 0) +
interestCalc(100.00, 12, 1)
);
console.log(
interestCalc(100.00, 4, 0) +
interestCalc(100.00, 11, 1)
);
console.log(
interestCalc(100.00, 10, 0) +
interestCalc(100.00, 5, 1)
);
console.log(
interestCalc(100.00, 12, 0) +
interestCalc(100.00, 3, 1)
);
function interestCalc(principal, time, interestRate) {
return (principal + principal * interestRate / 100) * time / 12;
}
如您所见,它们都在该范围内
现在,让我们让它变得更聪明
console.log(calc(100, 3, 1, 15));
console.log(calc(100, 4, 1, 15));
console.log(calc(100, 10, 1, 15));
console.log(calc(100, 12, 1, 15));
function calc(base, firstYearMonths, increase, totalMonths) {
return (base * firstYearMonths / 12) + (base * (increase + 100) / 100 * (totalMonths - firstYearMonths) / 12);
}
但这总共只允许 12 到 23 个月
所以,让我们让它变得更聪明,因为现在我们甚至可以管理两次或多次加薪(即跨越 2 次或更多工资加薪)
console.log(calc(100, 3, 1, 15));
console.log(calc(100, 4, 1, 15));
console.log(calc(100, 10, 1, 15));
console.log(calc(100, 12, 1, 15));
function calc(base, firstYearMonths, increase, totalMonths) {
let ret = base * firstYearMonths / 12;
totalMonths -= firstYearMonths;
let year = 1;
while(totalMonths > 0) {
ret += base * (1 + (increase * year) / 100) * Math.min(totalMonths, 12) / 12;
totalMonths -= 12;
year += 1;
}
return ret;
}
关于javascript - 为什么这些 JavaScript 方程会输出不同(但几乎相同)的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55755872/
在我的一门类(class)中,我接到了一项家庭作业,要求我们在谷歌上搜索 Metapost 语言并找到该语言中方程求解功能的用途。 在浏览了 Metapost 用户手册的前十多页后,我发现只有一个原因
你能帮我在 this page 上的谷歌图表上隐藏趋势线上的工具提示(方程)吗? ? 谢谢 以下是我正在使用的图表选项: var options = { title: 'Weight
我正在尝试将 TeXWorks 编辑器配置为使用与 TeXMaker 相同的语法着色。但是,TexWorks 使用正则表达式来指定应该着色的内容。不幸的是,它没有数学的默认设置。 我想匹配 $ 之间的
我刚开始玩 GHCi。我看到列表生成器基本上解决了给定集合中的方程式: Prelude> [x | x [0.01,0.2..2.0] [1.0e-2,0.2,0.39,0.580000000000
是否有可以使用的图形表达式生成器或方程编辑器的 Java 开源实现? 最好有在线演示,或者至少有屏幕截图。 最佳答案 取决于方程的类型。 如果您正在考虑简单的多项式,您可以尝试 Java Expres
我有四个文本输入字段,在用户输入相关值后,我必须进行 JavaScript 计算以将它们全部相加 我使用: var total = Number(value1) + Number(value2) +
为什么这段代码有两个不同的输出(GCC 4.5.1)(我已经评论了重要的行): int main() { bool a = 1; bool b = 1; bool c = 1;
如果标题含糊不清,我深表歉意,但我不知道如何为我的情况命名。我正在为使用 GPS 的 iPhone 编写一个应用程序。在 didUpdateLocations: 方法中,我针对任意大小的变量测试位置的
我正在尝试计算表中学生的 BMI,四舍五入到三位数: +-------+--------+--------+ | fname | weight | height | +-------+--------
我们可以使用 deSolve R 中的常微分方程 (ODE) 包,但是,我找不到解决两个嵌套 ODE 方程的方法,假设` b'(t) = beta - k*b(t); a'(t) = alpha -b
我有一个 boolean 方程,想简化它。帮忙解决一下。 bool needLoad = isA || (!isA && !isB); 之后我使用 if (needLoad){ if (
我很感兴趣,建模工具(在我的例子中是 OpenModelica 和 Dymola - 建模语言 Modelica)如何求解方程组(线性和/或非线性)。这些工具专为求解微分代数方程而设计。我知道一点将微
Julia:当我有绘图时如何找到最佳拟合曲线/方程?我有一个用 map 绘制的图,但我需要找到一个适合它的二次方程? 最佳答案 正如评论中所说,有一个情节在这里并不真正相关;只有数据本身是。您可以使用
我一直在尝试将像 100, 45 这样的输入放入文本框中,并通过单击按钮通过我的方程式运行它,但我不知道该怎么做。单击按钮后,它应该发布答案作为警报。请帮忙。谢谢。 function Rad(a, b
Julia:当我有绘图时如何找到最佳拟合曲线/方程?我有一个用 map 绘制的图,但我需要找到一个适合它的二次方程? 最佳答案 正如评论中所说,有一个情节在这里并不真正相关;只有数据本身是。您可以使用
有人可以向我解释为什么下面的代码会打印字符“u”吗? int p = 9; int q = 5; int r = p - q; double x = p; double y = q; St
我想以某种方式缩短我的 ODE 方程,因为否则代码会变得困惑。我尝试过使用辅助函数,例如这里的 fe() ,但这不起作用。下面的代码只是一个例子,欢迎任何建议!谢谢! # Import the req
我无法创建正确的文件。程序中的方程不会迭代,它只会根据请求的数量写入相同的总和。 for 循环。 #include #include #include #define LEN 256 int m
我有 2 个指向一些 Point 结构的指针。我想计算两点之间的距离(我不需要计算它的根)所以我有这个: w[0]=X[l]; w[1]=X[l+1]; d=m(w[0]->x
我有一个具有 CSV 上传功能的网站,它将 CSV 中的所有内容推送到临时表,然后分成较小的表。 目前,我有一个显示页面,在 HTML 表格中显示所有这些信息。然而,有些部分需要有公式化的表示。换句话
我是一名优秀的程序员,十分优秀!