为什么我的小费计算器将我的总数乘以10?

时间:2017-01-15 03:10:25

标签: javascript

我只是想制作一个简单的小费计算器,我认为它需要花费5秒钟,但是我没有得到它......

为什么会这样

    subTotal = prompt('Total before Tip');
    tipPercent = prompt('Percentage to Tip (Please use decimal)');
    tip=tipPercent*subTotal;
    total = subTotal+tip;
    alert('Tip is ' + tip + ' Total is ' + total );

计算总数的10倍应该是多少?我检查了所有其他变量,除了subTotal + tip之外,它还能正确计算。

5 个答案:

答案 0 :(得分:4)

total = subTotal+tip;

这将subTotal字符串与提示字符串连接起来。

在将值添加到一起之前,先将值转换为float。

subTotal = parseFloat(prompt('Total before Tip'));
tipPercent = parseFloat(prompt('Percentage to Tip (Please use decimal)'));

答案 1 :(得分:2)

JavaScript将小计和总计视为字符串而不是浮点数或整数 转换将解决您的问题 这里我使用Number函数将任何字符串转换为适当的数字类型

  

subTotal = prompt('提示前总计');       tipPercent = prompt('提示百分比(请使用小数)');       尖端= tipPercent *小计;       total = Number(subTotal)+ Number(tip);       警报('提示是'+提示+'总计是'+总数);

答案 2 :(得分:1)

你的提示是字符串,它简单地连接字符串。

您需要将字符串转换为数字,在您的提示计算的情况下,js将字符串转换为数字,但总数不是。尝试这样的事情(在值之前添加parseInt()以强制JS将它们作为整数处理):

 total = parseInt(subTotal)+parseInt(tip);

答案 3 :(得分:1)

来自prompt的值不是整数。阅读:Window.prompt() - Web APIs | MDN

使用parseInt() - JavaScript | MDN转换它。

此外,在计算小费时,你错过了除法。

还有一件事 - 如果你没有使用var声明变量,它们将是全局变量!

查看此工作代码段

var subTotal = parseInt(prompt('Total before Tip'));
var tipPercent = parseInt(prompt('Percentage to Tip (Please use decimal)'));
var tip = tipPercent * subTotal/100;
var total = subTotal + tip;
alert('Tip is ' + tip + ' Total is ' + total);

答案 4 :(得分:1)

以上几个答案都是正确的。输入是STRING,但您想将它们转换为数字以对它们进行数学运算。

最简单的解决方案是在获得用户输入时进行转换:

subTotal = Number(prompt('Total before Tip'));
tipPercent = Number(prompt('Percentage to Tip (Please use decimal)'));

输入20.00然后.15将导致23