javascript - 在 JavaScript 中将 let 值相加
问题描述
我正在使用 JavaScript 开发税收计算器应用程序,但在添加 let 值时遇到问题。
当尝试将 3 个不同的税值加在一起时,在控制台中,我总是得到的答案是第一个值。
let basicRate,
higherRate,
additionalRate;
function calculateTaxDue(grossSalary) {
if (grossSalary > 150000) {
basicRate = parseFloat((46351 - 11000) * 0.2).toFixed(2);
higherRate = parseFloat((150000 - 46351) * 0.4).toFixed(2);
additionalRate = parseFloat((grossSalary - 150000) *
0.45).toFixed(2)
taxDue = parseFloat((basicRate + higherRate +
additionalRate)).toFixed(2);
}
}
calculateTaxDue(150001)
console.log(parseFloat(basicRate).toFixed(2));
console.log(parseFloat(higherRate).toFixed(2));
console.log(parseFloat(additionalRate).toFixed(2));
console.log(parseFloat(basicRate + higherRate +
additionalRate).toFixed(2));
只需将第一个值 (basicRate) 打印到控制台。我对此感到困惑。
为第一次缺乏细节而道歉。
谢谢
解决方案
你得到这个结果是因为basicRate
,higherRate
和additionalRate
是字符串。
basicRate + higherRate +
additionalRate
产生字符串"7070.2041459.600.45"
和parseFloat("7070.2041459.600.45").toFixed(2)
返回7070.20
。
仅.toFixed
在您真正想要显示数字时使用:
let basicRate,
higherRate,
additionalRate;
function calculateTaxDue(grossSalary) {
if (grossSalary > 150000) {
basicRate = (46351 - 11000) * 0.2;
higherRate = (150000 - 46351) * 0.4;
additionalRate = (grossSalary - 150000) *
0.45;
taxDue = basicRate + higherRate +
additionalRate;
}
}
calculateTaxDue(150001)
console.log(basicRate.toFixed(2));
console.log(higherRate.toFixed(2));
console.log(additionalRate.toFixed(2));
console.log((basicRate + higherRate +
additionalRate).toFixed(2));
最重要的是:阅读您正在使用的函数的文档。
parseFloat
需要一个字符串作为输入并返回一个数字。像在parseFloat((46351 - 11000) * 0.2)
..toFixed
返回一个字符串。如果您想用数值实际执行进一步的计算,请不要使用它。
最后,不要使用浮点值来执行货币计算。由于舍入误差和精度损失,结果将不正确。将所有数字表示为整数。
推荐阅读
- python - 实体框架:仅当所有对象都存在时才更新多个对象
- javascript - 在单击按钮的情况下执行方法
- python-3.x - Python 映射列表乱序返回字典
- javascript - 用打字稿和角度对父母和孩子进行排序
- android - 根据屏幕密度分离 Jetpack 可组合功能
- vue.js - 覆盖 Vuetify 变量
- node.js - 为什么 api 调用需要很长时间才能响应?通过邮递员调用相同的 api url 立即给出结果
- google-apps-script - Google Apps 脚本从 Stripe 接收 webhook,未能提取部分接收到的事件信息
- rust - 使用类似“复制”的语义在可变引用上创建包装器
- c# - 如何使用 CsvHelper 正确映射集合