我只是想制作一个简单的小费计算器,我认为它需要花费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之外,它还能正确计算。
答案 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