为什么我们需要带变量的parseInt()

时间:2018-01-13 18:03:47

标签: javascript

见下面的代码。我的问题是,当用户实际输入一个整数时,为什么我需要在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();

2 个答案:

答案 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();