精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript 浮點數及運算精度調整總結

開發 前端
JavaScript 只有一種數字類型 Number,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的。

JavaScript 只有一種數字類型 Number,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的

[[157835]]

  1. 十進制       二進制 
  2. 0.1              0.0001 1001 1001 1001 … 
  3. 0.2              0.0011 0011 0011 0011 … 
  4. 0.3              0.0100 1100 1100 1100 … 
  5. 0.4              0.0110 0110 0110 0110 … 
  6. 0.5              0.1 
  7. 0.6              0.1001 1001 1001 1001 … 

所以比如 1.1,其程序實際上無法真正的表示 ‘1.1′,而只能做到一定程度上的準確,這是無法避免的精度丟失:1.09999999999999999

在JavaScript中問題還要復雜些,這里只給一些在Chrome中測試數據:

  1. console.log(1.0-0.9 == 0.1)    //false 
  2. console.log(1.0-0.8 == 0.2)    //false 
  3. console.log(1.0-0.7 == 0.3)    //false 
  4. console.log(1.0-0.6 == 0.4)    //true 
  5. console.log(1.0-0.5 == 0.5)    //true 
  6. console.log(1.0-0.4 == 0.6)    //true 
  7. console.log(1.0-0.3 == 0.7)    //true 
  8. console.log(1.0-0.2 == 0.8)    //true 
  9. console.log(1.0-0.1 == 0.9)    //true 

那如何來避免這類 1.0-0.9 != 0.1 的非bug型問題發生呢?下面給出一種目前用的比較多的解決方案, 在判斷浮點運算結果前對計算結果進行精度縮小,因為在精度縮小的過程總會自動四舍五入:

  1. (1.0-0.9).toFixed(digits)  // toFixed() 精度參數digits須在0與20之間 
  2. console.log(parseFloat((1.0-0.9).toFixed(10)) === 0.1)   //true 
  3. console.log(parseFloat((1.0-0.8).toFixed(10)) === 0.2)    //true 
  4. console.log(parseFloat((1.0-0.7).toFixed(10)) === 0.3)    //true 
  5. console.log(parseFloat((11.0-11.8).toFixed(10)) === -0.8)   //true 

寫成一個方法:

  1. //通過isEqual工具方法判斷數值是否相等 
  2. function isEqual(number1, number2, digits){ 
  3.   digits = digits == undefined? 10: digits; // 默認精度為10 
  4.   return number1.toFixed(digits) === number2.toFixed(digits); 
  5. console.log(isEqual(1.0-0.70.3));  //true 
  6. //原型擴展方式,更喜歡面向對象的風格 
  7. Number.prototype.isEqual = function(number, digits){ 
  8.   digits = digits == undefined? 10: digits; // 默認精度為10 
  9.   return this.toFixed(digits) === number.toFixed(digits); 
  10. console.log((1.0-0.7).isEqual(0.3)); //true 

接下來,再來試試浮點數的運算,

  1. console.log(1.79+0.12)  //1.9100000000000001 
  2. console.log(2.01-0.12)   //1.8899999999999997 
  3. console.log(1.01*1.3)    //1.3130000000000002 
  4. console.log(0.69/10)     //0.06899999999999999 

解決方案:

 

  1. //加法函數,用來得到精確的加法結果 
  2. //說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。 
  3. //調用:accAdd(arg1,arg2) 
  4. //返回值:arg1加上arg2的精確結果 
  5. function accAdd(arg1,arg2){ 
  6.   var r1,r2,m; 
  7.   try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0
  8.   try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0
  9.   m=Math.pow(10,Math.max(r1,r2)) 
  10.   return (arg1*m+arg2*m)/m 
  11. //給Number類型增加一個add方法,調用起來更加方便。 
  12. Number.prototype.add = function (arg){ 
  13.   return accAdd(arg,this); 
  14.  
  15. //減法函數,用來得到精確的減法結果 
  16. //說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的減法結果。 
  17. //調用:accSub(arg1,arg2) 
  18. //返回值:arg1減去arg2的精確結果 
  19. function accSub(arg1,arg2){ 
  20.   var r1,r2,m,n; 
  21.   try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0
  22.   try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0
  23.   m=Math.pow(10,Math.max(r1,r2)); 
  24.   //last modify by deeka 
  25.   //動態控制精度長度 
  26.   n=(r1>=r2)?r1:r2; 
  27.   return ((arg1*m-arg2*m)/m).toFixed(n); 

 

  1. //除法函數,用來得到精確的除法結果 
  2. //說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為精確的除法結果。 
  3. //調用:accDiv(arg1,arg2) 
  4. //返回值:arg1除以arg2的精確結果 
  5. function accDiv(arg1,arg2){ 
  6.   var t1=0,t2=0,r1,r2; 
  7.   try{t1=arg1.toString().split(".")[1].length}catch(e){} 
  8.   try{t2=arg2.toString().split(".")[1].length}catch(e){} 
  9.   with(Math){ 
  10.     r1=Number(arg1.toString().replace(".","")) 
  11.     r2=Number(arg2.toString().replace(".","")) 
  12.     return (r1/r2)*pow(10,t2-t1); 
  13.   } 
  14. //給Number類型增加一個div方法,調用起來更加方便。 
  15. Number.prototype.div = function (arg){ 
  16.   return accDiv(this, arg); 
  17.  
  18. //乘法函數,用來得到精確的乘法結果 
  19. //說明:javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。 
  20. //調用:accMul(arg1,arg2) 
  21. //返回值:arg1乘以arg2的精確結果 
  22. function accMul(arg1,arg2) { 
  23.   var m=0,s1=arg1.toString(),s2=arg2.toString(); 
  24.   try{m+=s1.split(".")[1].length}catch(e){} 
  25.   try{m+=s2.split(".")[1].length}catch(e){} 
  26.   return  Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 
  27. //給Number類型增加一個mul方法,調用起來更加方便。 
  28. Number.prototype.mul = function (arg){ 
  29.   return accMul(arg, this); 
  30. <br>//驗證一下: 
  31. console.log(accAdd(1.790.12));  //1.91 
  32. console.log(accSub(2.010.12));  //1.89 
  33. console.log(accDiv(0.6910));    //0.069<br>console.log(accMul(1.01, 1.3));   //1.313 

改造之后,可以愉快地進行浮點數加減乘除操作了~

責任編輯:王雪燕 來源: theWalker
相關推薦

2017-10-16 10:42:27

前端JavaScript浮點數

2020-09-15 12:57:46

C 語言浮點數內存

2023-07-05 08:00:58

Redis數據庫

2018-08-24 10:16:23

內存浮點數存儲

2020-10-12 06:38:08

存儲定點數

2011-05-25 14:10:38

浮點數

2021-10-19 14:04:28

C++類型數字

2021-07-27 06:49:11

Node.js大數JavaScrip

2023-11-08 13:32:00

JavaScript浮點數計算

2009-05-19 10:10:01

Oracle時間加減時間操作

2010-07-22 17:39:44

2024-05-31 08:38:35

Python浮點數屬性

2010-01-15 15:21:35

C++

2021-10-29 22:49:57

JavaScript開發精度

2025-03-03 04:20:00

2021-11-15 09:32:06

浮點面試Java

2022-06-15 15:44:21

無損數據壓縮鴻蒙

2025-03-14 10:34:22

2024-04-15 00:00:00

LongBigDecimal運算

2025-04-01 07:50:00

Dinero.js前端開發
點贊
收藏

51CTO技術棧公眾號

一区二区精品视频| 亚洲国产不卡| 亚洲巨乳在线| 日韩电影网在线| 欧美日韩一区二区三区在线视频| 800av在线播放| 电影一区电影二区| 91亚洲精品乱码久久久久久蜜桃| 久久久精品免费| 日韩日韩日韩日韩日韩| 日韩一区二区三区不卡| 成人高清av| 欧美日韩国产精品一区| 91在线播放视频| 扒开伸进免费视频| 丁香花电影在线观看完整版| 8x国产一区二区三区精品推荐| 国产精品一区二区久久不卡| 日韩女优av电影| 日韩在线综合网| 一级黄色短视频| 羞羞答答成人影院www| 亚洲精品国偷自产在线99热 | 男人av在线| 狠狠久久亚洲欧美| 日本午夜在线亚洲.国产| 精品少妇人妻av一区二区三区| 成入视频在线观看| 欧美国产激情一区二区三区蜜月| 国产精品激情av电影在线观看| 国产一区二区三区视频播放| 精品视频在线观看免费观看| 欧美在线观看视频一区二区三区| 台湾无码一区二区| 天天操天天干天天舔| 一本久道久久综合婷婷鲸鱼| 亚洲高清不卡av| 亚洲精品性视频| 你懂的在线免费观看| 亚洲一区日韩| 777777777亚洲妇女| 国产成人无码一区二区在线观看| 亚洲美女尤物影院| 1024国产精品| 日韩不卡av| 国产露脸国语对白在线| 麻豆一区二区99久久久久| 一区二区三区免费在线| 波多野结衣精品| 中文字幕精品综合| 91探花福利精品国产自产在线| 国产中文字幕视频| 国产一在线精品一区在线观看| 18禁裸男晨勃露j毛免费观看| 中文字字幕码一二三区| 日日夜夜一区| 欧美手机在线视频| 国产中文字幕视频在线观看| av在线资源| 2023国产精华国产精品| 色哟哟精品一区| 少妇高潮喷水久久久久久久久久| 成人免费高清| 亚洲免费观看高清完整| 亚洲精品在线视频观看| 少妇性bbb搡bbb爽爽爽欧美| 国产精品18久久久久久久久久久久| 国产日韩av高清| 外国一级黄色片| 忘忧草在线影院两性视频| 亚洲欧美日韩系列| 无遮挡亚洲一区| 1024国产在线| 久久久精品国产免费观看同学| 官网99热精品| 日本在线免费观看一区| 亚洲春色一区二区三区| 久久精品99国产精品| 欧美一级bbbbb性bbbb喷潮片| 91视频综合网| 在线成人亚洲| 久久久久久久999| 久久狠狠高潮亚洲精品| 极品少妇一区二区三区| …久久精品99久久香蕉国产| 久草视频精品在线| 夜夜嗨网站十八久久| 国产精品成人免费电影| 久久久国产精品成人免费| 亚洲日本激情| 欧美激情va永久在线播放| 久久久久久久久久久网| 亚洲黄页一区| 日本高清不卡的在线| 亚洲精品男人的天堂| 亚洲国内精品| 国产精品狼人色视频一区| 中国黄色一级视频| 国产在线精品不卡| 91九色国产视频| 日韩在线无毛| 中文字幕一区二区三区四区不卡 | 日本成人性视频| 亚洲婷婷噜噜| 国产精品蜜臀在线观看| 亚洲免费精品视频| 国产美女福利在线观看| 好吊成人免视频| 男人操女人免费软件| 欧美日韩va| 在线91免费看| 亚洲观看黄色网| 精品视频高潮| 久久国产精品偷| 成人性生活毛片| 亚洲精华国产欧美| 国产精品一区二区三区在线播放| 中文在线资源天堂| 国产精品小仙女| 麻豆91蜜桃| 婷婷激情在线| 精品久久香蕉国产线看观看gif| 熟妇人妻无乱码中文字幕真矢织江| 992tv国产精品成人影院| 精品剧情在线观看| 成人小视频免费看| 亚洲特色特黄| 国产日韩欧美一二三区| 国产又粗又大又爽| 久久久久久久久久电影| 男人的天堂视频在线| 性欧美videohd高精| 亚洲国产精品视频在线观看| 四虎地址8848| 亚洲欧美成人| 91精品久久香蕉国产线看观看| 蝌蚪视频在线播放| 亚洲国产精品精华液ab| 成人性做爰aaa片免费看不忠| 成人盗摄视频| 欧美夫妻性生活视频| 国产三级理论片| 26uuu精品一区二区| 可以在线看的av网站| 成人亚洲精品| 一区二区欧美亚洲| 欧美日韩免费一区二区| 免费观看在线色综合| 日本三级中国三级99人妇网站| 黑人极品ⅴideos精品欧美棵| 欧洲另类一二三四区| 九热视频在线观看| 久草精品视频| 91禁外国网站| 国产高清第一页| 一区二区三区.www| 操人视频免费看| 亚洲色图88| 国产精品久久久久久久午夜 | 久久伊人久久| 久久天堂电影网| 97精品人妻一区二区三区| 91麻豆福利精品推荐| 免费在线观看毛片网站| av不卡一区| 欧美成人免费播放| 91成品人影院| 成人欧美一区二区三区白人 | 2023国产精品自拍| 日日摸日日碰夜夜爽无码| 日本欧美高清| 97婷婷涩涩精品一区| 亚洲精品一区二区三区四区| 亚洲精品日日夜夜| 九九精品久久久| 好吊日精品视频| 国产精品入口免费视| 黄色网页在线免费看| 欧美日韩国产综合久久| 欧美人与禽zoz0善交| 激情文学综合插| 日本a在线天堂| 日韩成人午夜| 日本久久久久亚洲中字幕| 99国产成人精品| 欧美日韩国产精品一区二区不卡中文| 色屁屁草草影院ccyy.com| 国产精品一二三在| 久久久久久久久一区| 韩国美女久久| 亚洲激情国产精品| 五月天中文字幕| 一区二区三区在线视频观看 | 国产福利第一页| 懂色av影视一区二区三区| 国模私拍在线观看| 水蜜桃久久夜色精品一区的特点| 午夜视频在线观看精品中文| 北条麻妃一区二区三区| 亚洲一二区在线| 国产一区一一区高清不卡| 在线观看欧美视频| 五月天激情丁香| 久久女同性恋中文字幕| 免费国产成人av| 清纯唯美亚洲经典中文字幕| 国产精品观看在线亚洲人成网| 久久久久久久久免费视频| 日韩欧美中文字幕一区| 久久精品第一页| 波多野结衣中文一区| 亚洲欧洲日本韩国| 亚洲欧洲精品成人久久奇米网| jizzzz日本| 18精品爽视频在线观看| 天天久久综合| 成人欧美一区二区三区视频xxx | 国产一级18片视频| 欧美—级在线免费片| 精品国产1区二区| 黄色小视频在线免费看| 久久精品视频免费| 毛片一区二区三区四区| 欧美日韩理论| 神马影院一区二区三区| 日韩午夜电影免费看| 国产91精品久久久久久久| av片哪里在线观看| 日韩三级在线免费观看| 久久精品久久国产| 粉嫩av亚洲一区二区图片| 欧美在线观看成人| 精品久久美女| 国产亚洲精品自在久久| 激情小说亚洲| 欧美极度另类性三渗透| 欧美色18zzzzxxxxx| 在线亚洲高清视频| 丝袜美腿小色网| 中文字幕视频一区| 成年人小视频在线观看| 麻豆成人久久精品二区三区红| 免费看黄在线看| 国内精品久久久久国产盗摄免费观看完整版| 色播五月综合| 欧美色蜜桃97| 色一情一乱一伦一区二区三区 | 国产精品毛片久久久久久久久久99999999| www.一区| 国产精品日韩欧美综合| 韩漫成人漫画| 国产精品爱久久久久久久| 日本综合久久| 国产精品美女呻吟| 精品176极品一区| 国产有码一区二区| 亚洲天堂网站| 97久久天天综合色天天综合色hd | 欧美久久久久久久久| 五月婷婷丁香在线| 色欧美日韩亚洲| aaaaaa毛片| 欧美在线短视频| 91久久精品无码一区二区| 欧美精品乱码久久久久久按摩| 国产成人精品网| 色久优优欧美色久优优| 中文字幕久久网| 欧美一区二区三级| 丰满肥臀噗嗤啊x99av| 亚洲激情在线观看| 国产资源在线观看| 日韩中文在线观看| a毛片在线看免费观看| 久久理论片午夜琪琪电影网| 亚洲无码精品在线播放| 日本乱人伦一区| 亚洲一级在线播放| 日韩三级.com| 色在线免费视频| 中文亚洲视频在线| 国内外激情在线| 国内偷自视频区视频综合| 精精国产xxxx视频在线野外| 国产精品久久久久久久久久东京 | 黑人と日本人の交わりビデオ| 中文字幕一区av| 成人手机在线免费视频| www.欧美.com| 久久亚洲AV无码专区成人国产| 国产精品毛片高清在线完整版| 天天天天天天天天操| 五月激情综合色| 国产又粗又黄又爽的视频| 亚洲第一精品夜夜躁人人躁| 欧美日韩影视| 欧美成人国产va精品日本一级| 国产传媒在线观看| 成人精品网站在线观看| 国产一区丝袜| 日本精品久久电影| 不卡视频观看| 国产日产欧美精品| 日韩动漫一区| 国产一本一道久久香蕉| 182午夜在线观看| caoporen国产精品视频| 成年人视频软件| 黑人巨大精品欧美一区二区| 91国在线视频| 欧美精品一区二区三区高清aⅴ| se在线电影| 欧美国产日韩免费| 日本国产欧美| 久久国产一区| 欧美天堂亚洲电影院在线观看| www.欧美日本| av欧美精品.com| 国产这里有精品| 亚洲欧美一区二区三区极速播放| 激情 小说 亚洲 图片: 伦| 宅男噜噜噜66国产精品免费| 精品欧美日韩在线| 欧美岛国激情| 免费黄色一级网站| 国产酒店精品激情| 丰满圆润老女人hd| 亚洲一区二区三区中文字幕| 中文字幕在线观看欧美| 日韩av有码在线| 超碰在线资源| 日韩激情视频在线观看| 女同性恋一区二区| 久久精品二区三区| 午夜免费福利影院| 怡红院av一区二区三区| 一本一道人人妻人人妻αv| 日韩毛片在线观看| 国产在线拍揄自揄拍视频| 成人有码在线播放| 教室别恋欧美无删减版| 日日噜噜噜夜夜爽亚洲精品 | 亚洲久久中文字幕| 久久精品一区蜜桃臀影院| 青青草av在线播放| 亚洲成人久久一区| 国模雨婷捆绑高清在线| 国产精品美女诱惑| 亚洲一级电影| 中文字幕第3页| 亚洲国产日日夜夜| 黄色一级大片在线免费看国产| 欧美另类精品xxxx孕妇| 亚洲欧美久久精品| 天天做天天爱天天高潮| 日本在线不卡一区| 一级在线观看视频| 欧美视频一区在线| 欧美a免费在线| 91精品久久久久久久久青青 | 国内精品麻豆美女在线播放视频| 国产精品一区在线观看| 精品人妻一区二区三区浪潮在线| 精品国产三级a在线观看| 麻豆免费在线观看| 亚洲综合中文字幕68页| 激情婷婷欧美| 国产精品欧美性爱| 亚洲影视在线观看| 五月婷婷久久久| 日韩美女免费视频| 成人免费淫片aa视频免费| 日韩一区中文| 国产高清精品软男同| 国产精品一区二区久激情瑜伽| 亚洲天堂网av在线| 欧美一区二区三区视频| 波多野结衣精品| 欧美人xxxxx| 免费视频最近日韩| 成人一级黄色大片| 精品成人免费观看| 熟女人妻一区二区三区免费看| 亚洲国产精品综合小说图片区| 天堂网在线中文| 久久亚洲免费视频| 乳色吐息在线观看| 奇米精品一区二区三区在线观看| 日韩精品――色哟哟| 偷拍与自拍一区| 粉嫩av一区| 成人在线观看91| 午夜亚洲视频| 日本不卡一二区| 精品成人a区在线观看| 成人黄色免费网站| 午夜啪啪福利视频| 久久亚洲精品国产精品紫薇| av高清一区二区| 国产成人91久久精品|