Math 对象
Math 不用你造出来。相框店柜台上就这一张照片:宽 7.6 厘米,垫纸边角剩 7.2 厘米,照片相对刻度线往左偏了 3.8 厘米,框条三根,分别是 12、9、15 厘米。尺寸先钉死。你要的是整数,不是再拿尺子量一次。
加减号和日期都不是这条路
算术那一页,符号夹在两个数中间,算完就结束。日期那一页,你用 new Date 做出一个时刻,再从它身上读一块。这里没有构造。new Math() 会失败,把 Math 当成函数来叫也会失败。先写对象的名字,再写这件事的名字,把你已经有的数交给它。
这张表只对这张柜台
别把它背成方法名单。每一行是店里的一个决定:标签、裁切、进货、往左偏、最长的框条、最短的框条。调用交出一个数,原来的尺寸还待在变量里。你要把 8 留下来,就得自己存。
📊 这张柜台的决定
| 做法 | 店里的决定 | 这里的数 | 手容易滑的地方 |
|---|---|---|---|
Math.round |
离 7.6 最近的整厘米 |
8 |
负数上的半个单位 |
Math.floor |
7.2 里真正能裁下来的 |
7 |
拿去用在往左的偏移上 |
Math.ceil |
要把 7.2 盖满该进多少 |
8 |
本来就是整数还往上抬 |
Math.trunc |
把 -3.8 的小数朝零切掉 |
-3 |
以为和朝更小的整数走一样 |
Math.max |
12、9、15 里最长的 | 15 |
递进去一个数组 |
Math.min |
这三根里最短的 | 9 |
同样把数组当一个数 |
零的右边,半个单位往上走,0.5 变成 1。零的左边,这半个单位并不继续往下。它朝正无穷走,所以 -1.5 停在 -1,不停在 -2。学校里「满五进一」多半只用正数练过。朝更小的整数走,是另一件事,留着给那次往左的偏移。
宽度标签
小票不印小数,店里要最近的整厘米。这次调用不会把 8 写进变量。后面还要用这个整数,就得自己存起来。
let width = 7.6;
console.log(Math.round(width));
标签上是 8。width 里仍是 7.6,因为没有人把 8 写回去。宽度若是 7.5,标签同样是 8。把这半个单位的规矩拿到 -1.5 上:不会走到 -2。这一步朝正方向,停住的整数是 -1。
let scrap = 7.2;
console.log(Math.floor(scrap));
console.log(Math.ceil(scrap));
剪刀停在 7。那两个十分并不够再裁出一厘米。这块边角若必须盖满、不能留缝,7 就短了,得进 8。边角若一开始就是整数 7,两种做法都停在 7。只有带着小数,裁和买才分开。
let nudge = -3.8;
console.log(Math.trunc(nudge));
console.log(Math.floor(nudge));
负号两次都留着,不会变成没有方向的距离。把小数朝零切掉,-3.8 就到 -3。朝更小的整数走,不许靠近零,不大于 -3.8 的整数是 -4。两件事弄混,框就会偏出一厘米。
console.log(Math.max(12, 9, 15));
console.log(Math.min(12, 9, 15));
三根框条是三个分开的参数。最长是 15,最短是 9。把三个数塞进一个数组,只递这一个包裹,做法不会拆开包裹,得到的是 NaN。比较没有发生。
let drawer = Math.floor(Math.random() * 6) + 1;
console.log(drawer >= 1 && drawer <= 6);
console.log(Math.random() < 1);
一次原始抽签碰不到 1。它从 0 起,并且始终小于 1。先乘 6,区间变成从 0 到小于 6。再朝更小的整数走,只剩下 0 到 5。然后加 1,抽屉才落在 1 到 6,所以第一行每次运行都成立。第二行是另一次抽签,不是抽屉号,它同样小于 1。若在朝更小的整数走之前就加 1,或者忘了加,抽屉会掉到 0 或 7。
小票上的圆
开口是圆,半径 5。面积是 π 乘半径再乘半径。小票不给客人看那一长串小数。先收到整数,段落里写的就是这个整数。
<!DOCTYPE html>
<html>
<head>
<title>math — page</title>
</head>
<body>
<p id="ticket">…</p>
<script>
let radius = 5;
let area = Math.PI * radius * radius;
let shown = Math.round(area);
let box = document.getElementById("ticket");
box.textContent = shown;
</script>
</body>
</html>
段落里读到的是 79。π 乘 25 大约是 78.54,收到整数后变成 79。5 是半径,25 是半径乘自己。这两个都不是段落里的字。
合上盒子之前
先看零的左边,框是在那里悄悄歪掉的。朝零切,-3.8 停在 -3。朝更小的整数走,停在 -4,而 -1.5 不会变成 -2。柜台其余的部分一眼就能对上:标签是 8、变量里仍是 7.6,边角裁到 7、盖满要 8,框条是 15 和 9,段落是 79,抽屉要落在 1 到 6,得让加 1 发生在最后。
代码能跑,框还是歪的
- 用
new去造Math,或把Math当函数叫 - 把
-1.5看成 -2,因为学校里的「满五」只在正数上练过,手就往更负的地方走 - 在
-3.8上把朝零切和朝更小的整数走对调 - 把 12、9、15 装进数组,再把这一个数组递进去
- 干等某一次抽签刚好等于 1
- 数本来就是整数,只因为这件事叫「盖住」,就再抬一档
带走的是方向,不是第二份方法名单。零的左边,切掉小数和朝更小走不是一路。下一页是 HTML DOM。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部