咳咳,先来首不怎么押韵的打油诗:

天花板高地板低
四舍五入不看一
遇到负的N点五
统统变成负的N

啥玩意儿!别急,请往下看~

js的Math对象提供了三种舍入的方法,分别是:

  1. Math.ceil()——天花板:向上舍入、向大舍入
  2. Math.round()——四舍五入
  3. Math.floor()——地板:向下舍入、向小舍入

其中Math.ceil()Math.floor()两种舍入方法最好理解,看一组测试:

// Math.ceil()向上舍入
Math.ceil(-1.4) // -1
Math.ceil(-1.5) // -1
Math.ceil(-1.6) // -1
Math.ceil(1.4) // 2
Math.ceil(1.5) // 2
Math.ceil(1.6) // 2
// Math.floor()向下舍入
Math.floor(-1.4) // -2
Math.floor(-1.5) // -2
Math.floor(-1.6) // -2
Math.floor(1.4) // 1
Math.floor(1.5) // 1
Math.floor(1.6) // 1

记忆:对于任意数,无论正负,Math.ceil()都是得到数值更大的数,Math.floor()都是得到数值更小的数。也就是打油诗的第一句:

天花板高地板低

但是,Math.round()在特定情况下比较特殊,需要单独记忆,先看常规情况的测试:

// Math.round()四舍五入
Math.round(-1.4) // -1
Math.round(-1.6) // -2
Math.round(1.4) // 1
Math.round(1.5) // 2
Math.round(1.6) // 2

记忆:以上情况(非-x.5,x为任意数)都可以理解为Math.round()眼里没有符号,无论正负,都先按正数对待,四舍五入之后再添上对应的符号。

但上面的记忆方法对于-x.5就不适用了,不信请看测试:

Math.round(-1.5) // -1

Math.round(-1.5)不等于-2,而是等于-1!

总结:
天花板高地板低
(ceil得到数值更大的数、floor相反)
四舍五入不看一
(“一”理解成负号“-”,存粹为了押韵)
遇到负的N点五
统统变成负的N
(这句的韵脚实在是押不住啊~)

1+
分类: js面试
浏览:1,005

0 条评论

发表评论

电子邮件地址不会被公开。

你必须允许浏览器启用JavaScript才能看到验证码

Scroll Up