见下面的代码。我的问题是,当用户实际输入一个整数时,为什么我需要在bill和tipPercent上使用parseInt()进行totalCost计算?
function billTotal() {
var bill = prompt("How much was your meal?");
if (bill != parseInt(bill)) {
alert("You need to enter an integer");
return;
};
var tip = prompt("How much would you like to tip?");
if (tip != parseInt(tip)) {
alert("You need to enter a number");
return;
}
var tipPercent = bill * (tip / 100);
var totalCost = parseInt(bill) + parseInt(tipPercent);
alert("You're Meal Cost " + totalCost);
};
billTotal();
答案 0 :(得分:0)
window.prompt
的结果始终是一个字符串。如果要将其作为整数使用,则需要使用parseInt
。
请注意,结果是一个字符串。这意味着您有时应该投射用户给出的值。例如,如果他的答案应该是数字,则应将值转换为数字。
var aNumber = Number(window.prompt("Type a number", ""));
参考:https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
答案 1 :(得分:0)
通常,您需要parseInt
才能将用户输入(prompt
)转换为整数,然后使用此值进行算术运算。
正如它更正式地说here:
parseInt()函数解析字符串参数并返回一个 指定基数的整数(数学数字的基数 系统)。
您的代码可以重构如下。最初我们解析用户输入,如果输入有效,我们继续计算。
function billTotal() {
var billStr = prompt("How much was your meal?");
var bill = parseInt(billStr,10);
if (!bill || bill < 0) {
alert("You entered an ivalid value for bill");
return;
};
var tipStr = prompt("How much would you like to tip?");
var tip = parseInt(tipStr,10);
if (!tip || tip < 0) {
alert("You entered an invalid value for tip");
return;
};
var tipPercent = bill * (tip / 100);
var totalCost = bill + tipPercent;
alert("You're Meal Cost " + totalCost);
};
billTotal();