JavaScript中保留小數(shù)點后N位方法總結(jié)
更新時間:2023年06月01日 11:59:46 作者:時傾
這篇文章主要為大家詳細介紹了JavaScript中保留小數(shù)點后N位的幾個常用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
四舍五入保留小數(shù)后 n 位
補0: 使用 toFixed(digits) 方法
- 四舍五入為指定的小數(shù)位數(shù)
- 返回字符串
- 小數(shù)實際位數(shù)不夠指定的位數(shù),不足的部分會補 0
(1).toFixed(2) // '1.00' (1.2).toFixed(2) // '1.20' (-2).toFixed(2) // '-2.00' (1.12345678).toFixed(7) // '1.1234568'
劣勢
- 參數(shù)必須是 0 ~ 20 之間的值,包括 0 和 20。參數(shù) < 0 報錯。
- 會出現(xiàn)數(shù)字精度問題。詳見ECMAScript 中的 toFixed 定義。
(1111111111.1234567891234).toFixed(8) // '1111111111.12345672'
不補0:自定義轉(zhuǎn)換方法
- 四舍五入為指定的小數(shù)位數(shù)
- 返回數(shù)字
- 小數(shù)實際位數(shù)不夠指定的位數(shù),不足的部分不會補 0
function roundFun(number, precision) { return Math.round(+number + 'e' + precision) / Math.pow(10, precision); } // 或 function roundFun(number, precision) { return Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision); }
roundFun(1, 2) // 1 roundFun(1.2, 2) // 1.2 roundFun(-2, 2) // -2 roundFun(1.12345678, 7) // 1.1234568 roundFun(1111111111.1234567891234, 8) // 1111111111.1234567
精確顯示小數(shù)后 n 位
不補0
- 精確保留小數(shù)后 n 位
- 返回數(shù)字
- 小數(shù)實際位數(shù)不夠指定的位數(shù),不足的部分不會補 0
const keepDecimal = (numStr, precision) => { const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`) const result = numStr.match(regexp) return result ? result[0] : '0' }
keepDecimal('1', 2) // '1' keepDecimal('1.2', 2) // '1.2' keepDecimal('1.12345678', 7) // '1.1234567' keepDecimal('12345.1234567891234', 8) // '12345.12345678' keepDecimal('123456789.1234567891234', 10) // '123456789.1234567891'
劣勢
- 不支持負數(shù)
- 不支持字符串
keepDecimal('-2', 2) // '0' keepDecimal('122sss', 10) // '122' keepDecimal('abcd', 10) // '0'
補0
- 精確保留小數(shù)后 n 位
- 返回字符串
- 小數(shù)實際位數(shù)不夠指定的位數(shù),不足的部分會補 0
const keepDecimal = (numStr, precision) => { const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`) const result = numStr.match(regexp) return result ? result[0] : '0' } const keepDecimalPlaces = (numStr, precision) => { let numberStr = keepDecimal(numStr, precision) let rs = numberStr.indexOf('.') if (rs < 0 && precision > 0) { rs = numberStr.length numberStr += '.' } while (numberStr.length <= rs + precision) { numberStr += '0' } return numberStr }
keepDecimalPlaces('1', 2) // '1.00' keepDecimalPlaces('1.2', 2) // '1.20' keepDecimalPlaces('1.12345678', 7) // '1.1234567' keepDecimalPlaces('12345.1234567891234', 8) // '12345.12345678' keepDecimalPlaces('123456789.1234567891234', 10) // '123456789.1234567891' keepDecimalPlaces('123456789.000001', 10) // '123456789.0000010000'
劣勢
- 不支持負數(shù)
- 不支持字符串
keepDecimalPlaces('-2', 2) // '0.00' keepDecimalPlaces('122sss', 10) // '122.0000000000' keepDecimalPlaces('abcd', 10) // '0.0000000000'
到此這篇關于JavaScript中保留小數(shù)點后N位方法總結(jié)的文章就介紹到這了,更多相關JavaScript保留小數(shù)點內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Js判斷參數(shù)(String,Array,Object)是否為undefined或者值為空
在一些前端控件要提交數(shù)據(jù)到服務器端的數(shù)據(jù)驗證過程中,需要判斷提交的數(shù)據(jù)是否為空。如果是普通表單的字符串數(shù)據(jù),只需要在 trim 后判斷 length 即可,而這里需要的數(shù)據(jù)可以是各種不同的類型,通過 JSON.stringify(data) 進行序列化后再傳遞2013-11-11Google Map API更新實現(xiàn)用戶自定義標注坐標
由于工作需要,又要開始看Google Map API 代碼,今天再把我之前的GoogleMap類,又更新了下,加了個簡單的用戶自定義標注坐標的功能。看看吧(代碼沒怎么優(yōu)化,別見笑)2009-07-07JavaScript使用html2canvas實現(xiàn)截取HTML并生成圖片
在前端開發(fā)中,有時我們需要將網(wǎng)頁的一部分或整個頁面截取并保存為圖片,這在生成報告、分享內(nèi)容或保存用戶界面狀態(tài)等場景中非常有用,本文將介紹如何使用 JavaScript 庫 html2canvas 來實現(xiàn)這一功能,并提供一個完整的示例,需要的朋友可以參考下2024-10-10超實用的全新JavaScript事件Scrollend實例詳解
這篇文章主要為大家介紹了超實用的全新JavaScript事件Scrollend實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01JavaScript實現(xiàn)加載導出CZML文件詳解
CZML是一種基于?JSON?的文件格式,用于描述地理空間數(shù)據(jù)和時間動態(tài)場景,這篇文章為大家詳細介紹了如何使用JavaScript實現(xiàn)CZML文件的加載與導出,需要的可以了解下2025-02-02用最通俗易懂的代碼幫助新手理解javascript閉包 推薦
我同樣也是個javascript新手,怎么說呢,先學的jquery,精通之后發(fā)現(xiàn)了javascript的重要性,再回過頭來學javascript面向?qū)ο缶幊?/div> 2012-03-03最新評論