門(mén)戶網(wǎng)站是指網(wǎng)絡(luò)營(yíng)銷(xiāo)方式有哪些
1、floor 返回不大于的最大整數(shù)(向下取整)?
2、round 則是4舍5入的計(jì)算,入的時(shí)候是到大于它的整數(shù)(當(dāng)-1.5時(shí)可見(jiàn),四舍五入后得到的結(jié)果不是我們期待的,解決辦法是先對(duì)他取絕對(duì)值,然后在用round方法)
round方法,它表示“四舍五入”,算法為Math.floor(x+0.5),即將原來(lái)的數(shù)字加上0.5后再向下取整,所以,Math.round(11.5)的結(jié)果為12,Math.round(-11.5)的結(jié)果為-11。
3、ceil 則是不小于他的最小整數(shù)(向上取整)
tofixed雖然是保留小數(shù) 但是他有bug?toFixed() 方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字。例如將數(shù)據(jù)Num保留2位小數(shù),則表示為:toFixed(Num);但是其四舍五入的規(guī)則與數(shù)學(xué)中的規(guī)則不同,使用的是銀行家舍入規(guī)則,銀行家舍入:所謂銀行家舍入法,其實(shí)質(zhì)是一種四舍六入五取偶(又稱(chēng)四舍六入五留雙)法。
最好還是用round
round() 方法可把一個(gè)數(shù)字舍入為最接近的整數(shù)。例如:Math.round(x),則是將x取其最接近的整數(shù)。其取舍的方法使用的是四舍五入中的方法,符合數(shù)學(xué)中取舍的規(guī)則。對(duì)于小數(shù)的處理沒(méi)有那么便捷,但是可以根據(jù)不同的要求,進(jìn)行自定義的處理。
例如:對(duì)于X進(jìn)行保留兩位小數(shù)的處理,則可以使用Math.round(X * 100) / 100.進(jìn)行處理。
定義和用法
round() 方法可把一個(gè)數(shù)字舍入為最接近的整數(shù)。
語(yǔ)法
Math.round(x)
參數(shù) 描述
x 必需。必須是數(shù)字。
返回值
與 x 最接近的整數(shù)。
說(shuō)明
對(duì)于 0.5,該方法將進(jìn)行上舍入。
例如,3.5 將舍入為 4,而 -3.5 將舍入為 -3。
3、JS無(wú)法進(jìn)行精確計(jì)算的bug
在做CRM,二代審核需求審核詳情頁(yè)面時(shí)。需要按比例(后端傳類(lèi)似0.8的小數(shù))把用戶輸入的數(shù)字顯示在不同的地方。
在做dubheInvest = invest * (1 - ratio);運(yùn)算時(shí)發(fā)現(xiàn)問(wèn)題。具體如下:
示例代碼:
console.log( 1 - 0.8 ); //輸出 0.19999999999999996
console.log( 6 * 0.7 ); //輸出 4.199999999999999
console.log( 0.1 + 0.2 ); //輸出 0.30000000000000004
console.log( 0.1 + 0.7 ); //輸出 0.7999999999999999
console.log( 1.2 / 0.2 ); //輸出 5.999999999999999
通過(guò)上面舉出的例子可以看到,原生的js運(yùn)算結(jié)果不一定準(zhǔn)確,會(huì)丟失精度。
解決方案:將浮點(diǎn)數(shù)乘以(擴(kuò)大)10的n次方倍,把浮點(diǎn)數(shù)變?yōu)檎麛?shù)后再進(jìn)行相應(yīng)的運(yùn)算,最后將得到的結(jié)果除以(縮小)10的n次方倍。
如 將 console.log(1-0.8); 變?yōu)?console.log((1 * 10 - 0.8 * 10) / 10); 即可得到正確的值