日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript四舍五入的改进

發布時間:2025/6/15 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript四舍五入的改进 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近的兩個項目中都有涉及到數據統計的部分,一般來說金額的數據都是選擇保存2位小數,以前是使用JavaScript原生對象Number的toFixed方法。但是在測試中出現了3.235.toFixed(2) = 3.23的問題。查了下資料發現是因為浮點數的存儲產生的問題。最后就自己封裝了一個函數來解決這個問題。

1. toFixed失去準確性的原因

關于浮點數的存儲我了解不多,這里推薦這個文章給需要的同學JavaScript 浮點數陷阱及解法。

2. 封裝toFixed

2-1 實現思路

  • 大體的思路是先分2部分,一是整數部分。整數部分不需要對值進行修改,為了和Number.toFixed保持一致,需要補上對應的0 (8.toFixed(2) => 8.00);
  • 小數部分要做3個判斷,當前小數后位數與要保存的位數進行比較。等于的直接返回,當前小數后位數小于要保存的位數就舍棄掉多余的部分。最后一種情況要針對正負數進行不同的處理,詳情見下方代碼。
  • 注意:返回的結果都是字符串。

2-2 代碼

let tofixed = (value, holdLen) => {value = value.toString();let dotIndex = value.indexOf(".");//判斷是否為整數if (dotIndex === -1) {//少幾位就補幾位0let integerStr = ".";for (let i = 0; i < holdLen; i++) {integerStr = integerStr + '0';}return value + integerStr;}//獲取小數點前后的字符串let dotBefore = value.split(".")[0];let dotAfter = value.split(".")[1];//小數點后與要保留的位數進行判斷出來let result = "";if (dotAfter.length === holdLen) {result = value;} else if (dotAfter.length < holdLen) {let forlength = holdLen - dotAfter.length//少幾位就補幾位0for (let i = 0; i < forlength; i++) {dotAfter = dotAfter + '0';}result = dotBefore + "." + dotAfter;} else {//獲取到要四舍五入的位置后一個數字的值let digit = value.substr(dotIndex + holdLen + 1, 1);if (digit >= 5) {let temp = Math.pow(10, 0 - holdLen);//負數和正數的四舍五入判斷parseFloat(value) > 0 ? value = parseFloat(value) + temp : value = parseFloat(value) - temp;value = value.toString();}result = value.substr(0, dotIndex + holdLen + 1);}return result; } console.log(tofixed(1.335, 2)); console.log(tofixed(2.1, 3)); console.log(tofixed(-8.546, 2)); console.log(tofixed(-9, 3));//打印結果 "1.34" "2.100" "-8.55" "-9.000"

我的處理辦法很粗糙,希望各位多多給出意見。

總結

以上是生活随笔為你收集整理的JavaScript四舍五入的改进的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美黄色一级 | 免费成人在线网站 | 黄页在线播放 | 国产精品久久久久久网站 | 国产女18毛片多18精品 | eeuss鲁丝片一区二区三区 | 亚洲免费成人网 | 日本视频二区 | 国产日韩欧美中文字幕 | 乱淫的女高中暑假调教h | 久久精品视频免费 | 手机在线免费视频 | 99精品免费在线观看 | 99国产一区| 精品伦理一区二区 | 久久精品国产99精品国产亚洲性色 | 亚洲怡红院av | 色哟哟入口国产精品 | 亚洲国产精品视频一区 | 亚洲天堂资源网 | 日本v片| 黄色片免费网站 | 亚洲成人av免费在线观看 | 一本加勒比hezyo黑人 | 国产传媒欧美日韩 | wwwwww色| 亚洲无人区码一码二码三码的含义 | 插插操操| 人妻精品一区二区三区 | 日韩影视一区 | 亚洲欧美日韩成人在线 | 成人自拍偷拍 | 在线成人小视频 | 黄色肉肉视频 | 国产网站av | 亚洲精视频 | 欧美视频亚洲视频 | 超碰97人人射妻 | 性欧美丰满熟妇xxxx性仙踪林 | 999热视频| 久久av影院 | 蜜臀av午夜精品 | 伊人黄| 牛夜精品久久久久久久99黑人 | 黑人高潮一区二区三区在线看 | 国产又粗又黄又爽又硬 | 久草免费看 | 一区二区精彩视频 | 日本免费网址 | 国产女人高潮毛片 | 日韩人妻精品一区二区 | 四川少妇xxx奶大xxx | 久久一区二区三区四区 | 亚洲欧美偷拍视频 | 91色影院 | 蜜臀999| 亚洲综合中文 | 一区精品视频在线观看 | va毛片| 色综合图片区 | 国产成人激情视频 | 欧美老女人性生活 | 香蕉久久久久 | www.jizzcom| 亚州av网 | 人妻少妇偷人精品无码 | 欧美1区| 99热这里有 | 999久久久国产 | 真实乱视频国产免费观看 | 国产一区二区黄 | 在线国产精品视频 | 日本高清精品 | 美女高潮黄又色高清视频免费 | 欧美日韩第一区 | 免费成人美女女电影 | 亚洲一区日本 | 精品国产免费无码久久久 | 69久人妻无码精品一区 | 夜夜摸视频网 | www.天堂在线 | 久久精品国产亚洲AV熟女 | 91狠狠| 色五五月| 国产v综合v亚洲欧美久久 | 国产91色在线| beeg日本高清xxxx18 | 在线观看欧美成人 | 午夜网站在线观看 | 91精品在线一区 | 精品少妇人妻av免费久久洗澡 | 影音先锋在线中文字幕 | 毛片内射久久久一区 | 亚洲第一页夜 | 天堂一区二区三区四区 | 欧美日韩精品一区二区三区视频播放 | 美女在线观看视频 | 久久免费看视频 | 青青草综合在线 |