正在加载...

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 写进变量。后面还要用这个整数,就得自己存起来。

标签上的厘米

javascript
let width = 7.6;
console.log(Math.round(width));

标签上是 8。width 里仍是 7.6,因为没有人把 8 写回去。宽度若是 7.5,标签同样是 8。把这半个单位的规矩拿到 -1.5 上:不会走到 -2。这一步朝正方向,停住的整数是 -1。

裁开还是盖住

javascript
let scrap = 7.2;
console.log(Math.floor(scrap));
console.log(Math.ceil(scrap));

剪刀停在 7。那两个十分并不够再裁出一厘米。这块边角若必须盖满、不能留缝,7 就短了,得进 8。边角若一开始就是整数 7,两种做法都停在 7。只有带着小数,裁和买才分开。

刻度线往左偏

javascript
let nudge = -3.8;
console.log(Math.trunc(nudge));
console.log(Math.floor(nudge));

负号两次都留着,不会变成没有方向的距离。把小数朝零切掉,-3.8 就到 -3。朝更小的整数走,不许靠近零,不大于 -3.8 的整数是 -4。两件事弄混,框就会偏出一厘米。

最长和最短

javascript
console.log(Math.max(12, 9, 15));
console.log(Math.min(12, 9, 15));

三根框条是三个分开的参数。最长是 15,最短是 9。把三个数塞进一个数组,只递这一个包裹,做法不会拆开包裹,得到的是 NaN。比较没有发生。

1 到 6 的抽屉

javascript
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。面积是 π 乘半径再乘半径。小票不给客人看那一长串小数。先收到整数,段落里写的就是这个整数。

圆的小票

html
<!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。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部