js 有小數點數據求和多出小數點問題記錄

>>  300+192.92
<<  492.91999999999996
>>  (300*100+192.92*100)/100
<<  492.92

作統計彙總時,頁面加和,展現出一堆的小數點。算法

網上查找了一下才知道好像是個精度BUG。一是說 JavaScript 浮點數計算的 Bug,另有說和計算機最終轉換成二進制計算有關係,可是不是全部小數都會有這種現象。spa

乾脆本身把它變成整數再求餘了。.net

網上自定義算法:code

//自定義加法運算
function addNum (num1, num2) {
 var sq1,sq2,m;
 try {
  sq1 = num1.toString().split(".")[1].length;
 }
 catch (e) {
  sq1 = 0;
 }
 try {
  sq2 = num2.toString().split(".")[1].length;
 }
 catch (e) {
  sq2 = 0;
 }
 m = Math.pow(10,Math.max(sq1, sq2));
 return (num1 * m + num2 * m) / m;
}
alert(addNum(0.1, 0.2));

參見:htm

http://www.jb51.net/article/73043.htmblog

相關文章
相關標籤/搜索