代码中我们分别将两条输入语句的值进行了 Number()或者 parseFloat(),然后进行求和。
初学者错误地将代码写成这样:
var a = prompt("请输入第 1 个数字");
var b = prompt("请输入第 2 个数字");
var result = Number(a + b);
alert(result);
程序将两条 Number()语句合并写在了一起,这是错误的。因为语句 Number(a + b)会先计算内部 a + b
的值,此时是两个字符串相加,比如 1+2 将得到字符串“12”。再进行 Number()转换,也只能将字符串“12”
变为数字 12,已经于事无补了。
写程序的时候,要非常清晰程序会如何执行,避免书写类似的错误。
将程序改为这样,是正确的:
var a = prompt("请输入第 1 个数字");
var b = prompt("请输入第 2 个数字");
var result = Number(a) + Number(b);
alert(result);
只要确保在加和之前,将两个字符串变为数字,程序都是正确的。
案例描述
我国普遍使用摄氏温度,一些国家使用华氏温度。它们的转换关系如下:
华氏温度 = 9 × 摄氏温度 ÷ 5 + 32
请编写 JavaScript 程序,让用户输入摄氏温度,显示对应的华氏温度,计算结果四舍五入到小数点后 1
位。
如何四舍五入
编程思路非常简单:用 prompt()弹出输入框,提示用户输入摄氏温度,然后进行计算,最后弹出结果。
但是结果要求四舍五入到小数点后 1 位,应该怎么办呢?
Math 对象提供了 round()方法可以将一个数字四舍五入,例如:
var a = 36.85;
var b = Math.round(a);
alert(b);
那如果我们想将数字四舍五入到小数点后一位,即将 36.85 四舍五入为 36.9,应该怎么办呢?
这里就要使用一个数学的小技巧:我们可以将 36.85 先乘以 10,变为 368.5;然后四舍五入,变为 369;
继续除以 10,最终变为 36.9。这就完成了四舍五入到小数点后 1 位的操作。
根据这个思路,书写代码:
var a = 36.85;
var b = Math.round(a * 10) / 10; //四舍五入到小数点后一位
alert(b);
程序运行结果符合预期
案例代码
我们已经解决将数字如何四舍五入到小数点后 1 位,现在题目“华氏温度转为摄氏温度”就已经迎刃而解了。
代码如下:
//第 1 步,让用户输入摄氏温度并转为数字
var c = Number(prompt("请输入摄氏温度"));
//第 2 步,计算
var f = 9 / 5 * c + 32;
//第 3 步,对结果进行四舍五入到小数点后 1 位
f = Math.round(f * 10) / 10;
//第 4 步,显示
alert("对应的华氏温度是" + f);
运行程序,首先会弹出输入框要求用户输入摄氏温度
例如我们输入数字 26,点击确定按钮后,会弹出对应的华氏温度,并且结果是四舍五入到小数点后 1 位的。