为什么 "toFixed" 多次阻止我的函数 运行?
Why is "toFixed" stopping my function from being ran multiple times?
我正在尝试制作一个点钞机,您每次点击它,您的 "money" 金额就会增加 1 美元。但是,我希望钱的显示始终显示 2 个小数位。当我使用 toFixed(2) 修复此问题时,它使得该函数只能 运行 一次,并且在页面刷新之前不会再次出现。
我已经尝试删除代码的 toFixed 部分,它可以正常运行,但它不会像我希望的那样显示小数位。
let money = 0;
let mpc = 1;
let moneySuffix = "";
function coinClick() {
money = money + mpc;
money = money.toFixed(2);
if (money >= 1000) {
moneySuffix = " thousand";
} else if (money >= 1000000) {
moneySuffix = " million";
} else if (money >= 1000000000) {
moneySuffix = " billion";
} else if (money >= 1000000000000) {
moneySuffix = " trillion";
} else if (money >= 1000000000000000) {
moneySuffix = " quadrillion";
} else {
moneySuffix = "";
}
document.querySelector("#totalMoney").innerHTML = "$" + money + moneySuffix;
}
本以为点击一次显示1.00,点击两次显示2.00,等等,结果点击一次显示1.00,然后就不能再增加了。
方法 Number.toFixed() returns 一个字符串,因此您正在将初始数字类型转换为字符串,这可能会导致后续 clicks
出错,因为您将尝试在字符串上执行 toFixed()
。如果您尝试向用户显示两位小数的数字,则仅将此方法应用于将向用户显示的代码部分:
let money = 0;
let mpc = 1;
let moneySuffix = "";
function coinClick()
{
money = money + mpc;
if (money >= 1000 && money < 1000000) {
moneySuffix = " thousand";
} else if (money >= 1000000 && money < 1000000000) {
moneySuffix = " million";
} else if (money >= 1000000000 && money < 1000000000000) {
moneySuffix = " billion";
} else if (money >= 1000000000000 && money < 1000000000000000) {
moneySuffix = " trillion";
} else if (money >= 1000000000000000) {
moneySuffix = " quadrillion";
} else {
moneySuffix = "";
}
// Note, we use toFixed() just here, but we don't change the numeric type
// of the variable money.
document.querySelector("#totalMoney").innerHTML = "$" + money.toFixed(2) + moneySuffix;
}
请注意,我还对 if-else
块进行了更改以使其正常工作,并且作为旁注,请注意存在限制:Number.MAX_SAFE_INTEGER
我正在尝试制作一个点钞机,您每次点击它,您的 "money" 金额就会增加 1 美元。但是,我希望钱的显示始终显示 2 个小数位。当我使用 toFixed(2) 修复此问题时,它使得该函数只能 运行 一次,并且在页面刷新之前不会再次出现。
我已经尝试删除代码的 toFixed 部分,它可以正常运行,但它不会像我希望的那样显示小数位。
let money = 0;
let mpc = 1;
let moneySuffix = "";
function coinClick() {
money = money + mpc;
money = money.toFixed(2);
if (money >= 1000) {
moneySuffix = " thousand";
} else if (money >= 1000000) {
moneySuffix = " million";
} else if (money >= 1000000000) {
moneySuffix = " billion";
} else if (money >= 1000000000000) {
moneySuffix = " trillion";
} else if (money >= 1000000000000000) {
moneySuffix = " quadrillion";
} else {
moneySuffix = "";
}
document.querySelector("#totalMoney").innerHTML = "$" + money + moneySuffix;
}
本以为点击一次显示1.00,点击两次显示2.00,等等,结果点击一次显示1.00,然后就不能再增加了。
方法 Number.toFixed() returns 一个字符串,因此您正在将初始数字类型转换为字符串,这可能会导致后续 clicks
出错,因为您将尝试在字符串上执行 toFixed()
。如果您尝试向用户显示两位小数的数字,则仅将此方法应用于将向用户显示的代码部分:
let money = 0;
let mpc = 1;
let moneySuffix = "";
function coinClick()
{
money = money + mpc;
if (money >= 1000 && money < 1000000) {
moneySuffix = " thousand";
} else if (money >= 1000000 && money < 1000000000) {
moneySuffix = " million";
} else if (money >= 1000000000 && money < 1000000000000) {
moneySuffix = " billion";
} else if (money >= 1000000000000 && money < 1000000000000000) {
moneySuffix = " trillion";
} else if (money >= 1000000000000000) {
moneySuffix = " quadrillion";
} else {
moneySuffix = "";
}
// Note, we use toFixed() just here, but we don't change the numeric type
// of the variable money.
document.querySelector("#totalMoney").innerHTML = "$" + money.toFixed(2) + moneySuffix;
}
请注意,我还对 if-else
块进行了更改以使其正常工作,并且作为旁注,请注意存在限制:Number.MAX_SAFE_INTEGER