跳转到主要内容
模块 2 · 第 3 课(共 4)课程中的7/32~10 min
模块课程(3/4)

数字和数学

在 JavaScript 中,只有一种数字类型:number。两个整数 和小数(浮点)就在那里。没有单独的 int / float 就像其他语言一样。

JS
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number'   ← Infinity is a special number
typeof NaN; // 'number'   ← even "Not a Number" is a number (!)

全局 Math 对象

Math 不是一个函数:它是一个对象,具有有用的方法和 常数。您不实例化它,直接使用它:

JS
Math.min(3, 1, 7); // 1
Math.max(3, 1, 7); // 7
Math.abs(-5); // 5
Math.round(4.5); // 5
Math.floor(4.9); // 4   (always rounds down)
Math.ceil(4.1); // 5   (always rounds up)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024   (equivalent to 2 ** 10)
Math.PI; // 3.141592653589793

随机数

Math.random() 返回 0(包括)和 1(排除)之间的小数。 要获得某个范围内的整数,您可以使用一个小公式:

JS
// Random integer between 0 and 9
Math.floor(Math.random() * 10);

// Random integer between 1 and 6 (a six-sided die)
Math.floor(Math.random() * 6) + 1;

小数的痛苦(浮点)

JS 使用 IEEE-754 64 位表示,与几乎所有 语言。它是二进制表示形式,因此某些小数不能 准确地表示:

JS
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // false

标准解决方案:使用 toFixed(n) 进行舍入(返回 字符串)或 处理金钱时使用以美分/千分位为单位的整数:

JS
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)

尝试一下

锻炼#js.m2.l3.e1
尝试:0加载中...

计算半径为“r = 5”的圆的面积,四舍五入到小数点后两位,作为“数字”。对于“r=5”,预计为 78.54。

正在加载编辑器...
显示提示

Math.PI 表示 pi,** 表示求幂; .toFixed(2) 进行舍入,Number(...) 转换回数字。

3 次尝试后可用的解决方案

复习练习

锻炼#js.m2.l3.e2
尝试:0加载中...

给定三个数字 12、7、23,返回最大值和最小值之间的差值(即 16)作为最后一个表达式。

正在加载编辑器...
显示提示

Math.max 和 Math.min 接受多个逗号分隔的参数。

3 次尝试后可用的解决方案