舍入
舍入是使用数字时最常见的操作之一。
这里有几个对数字进行舍入的内建函数:
//向下舍入:3.1变成3,-1.1变成-2
Math.floor()
//向上舍入:3.1变成4,-1.1变成-1
Math.ceil()
//向最近的整数舍入:3.1变成3,3.6变成4,中间值3.5变成4
Math.round()
//移除小数点后的所有内容而没有舍入:3.1变成3,-1.1变成-1
Math.trunc()(IE浏览器不支持这个方法)
这些函数涵盖了处理数字小数部分的所有可能方法。但是,如果我们想将数字舍入到小数点后n位改怎么办?
例如,我们有1.2345,并且想把它舍入到小数点后两位,仅得到1.23。
有两种方法可以实现这个需求:
1.乘除法
例如,要将数字舍入到小数点后两位,我们可以将数字乘以100(或更大的10的整数次幂),调用舍入函数,然后再将其除回。
let num = 1.23456;
//1.23456 -> 123.456 -> 123 ->1.23
alert(Math.round(num*100)/100);
2.函数toFixed(n)将数字舍入到小数点后n位,并以字符串形式返回结果。
let num = 12.34;
//12.3
alert(num.toFixed(1);
这会向上或向下舍入到最接近的值,类似于Math.round():
let num = 12.36;
//12.4
alert(num.toFixed(1));
请注意tofixed的结果是一个字符串。如果小数部分比需要的短,则在结尾添加0:
let num = 12.34;
//"12.34000",在结尾添加了0,以达到小数点后五位
alert(num.toFixed(5));
我们可以使用一元加号或Number()调用,将其转换为数字:+num.toFixed(5);