JS實現(xiàn)浮點數(shù)精確舍入小數(shù)點

舍入

舍入是使用數(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);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容