舍入
舍入是使用數(shù)字時最常見的操作之一。
這里有幾個對數(shù)字進行舍入的內(nèi)建函數(shù):
//向下舍入:3.1變成3,-1.1變成-2
Math.floor()
//向上舍入:3.1變成4,-1.1變成-1
Math.ceil()
//向最近的整數(shù)舍入:3.1變成3,3.6變成4,中間值3.5變成4
Math.round()
//移除小數(shù)點后的所有內(nèi)容而沒有舍入:3.1變成3,-1.1變成-1
Math.trunc()(IE瀏覽器不支持這個方法)
這些函數(shù)涵蓋了處理數(shù)字小數(shù)部分的所有可能方法。但是,如果我們想將數(shù)字舍入到小數(shù)點后n位改怎么辦?
例如,我們有1.2345,并且想把它舍入到小數(shù)點后兩位,僅得到1.23。
有兩種方法可以實現(xiàn)這個需求:
1.乘除法
例如,要將數(shù)字舍入到小數(shù)點后兩位,我們可以將數(shù)字乘以100(或更大的10的整數(shù)次冪),調(diào)用舍入函數(shù),然后再將其除回。
let num = 1.23456;
//1.23456 -> 123.456 -> 123 ->1.23
alert(Math.round(num*100)/100);
2.函數(shù)toFixed(n)將數(shù)字舍入到小數(shù)點后n位,并以字符串形式返回結(jié)果。
let num = 12.34;
//12.3
alert(num.toFixed(1);
這會向上或向下舍入到最接近的值,類似于Math.round():
let num = 12.36;
//12.4
alert(num.toFixed(1));
請注意tofixed的結(jié)果是一個字符串。如果小數(shù)部分比需要的短,則在結(jié)尾添加0:
let num = 12.34;
//"12.34000",在結(jié)尾添加了0,以達到小數(shù)點后五位
alert(num.toFixed(5));
我們可以使用一元加號或Number()調(diào)用,將其轉(zhuǎn)換為數(shù)字:+num.toFixed(5);