Mosquito323

          parseFloat的精度問題

          寫js時遇到的問題,已經解決,做筆記

          在js中進行以元為單位進行金額計算時 使用parseFloat會產生精度問題

          var price = 10.99;
          var quantity = 7;
          var needPay = parseFloat(price * quantity);

          needPay的正確結果應該是76.93元  但是運行后發現needPay為76.93000000000001 
          此情況可通過 toFixed(n)  方法修正 但是這個方法對 js版本要求較高 不能兼容ie5

          另一個解決方案是: 將元為單位的金額乘以100換算為分進行計算

          var price = 10.99
          var quantity = 7
          var needPay = Math.floor(parseFloat(price*100 * quantity))/100;

          parseFloat(price*100 * quantity)的計算結果是7693.000000000001   使用Math.round()方法四舍五入,再除100  即為正確的結果

          PS:順便學到了一點:Math.ceil() Math.floor() Math.round() 的區別
          Math.ceil() 是向上取整
          Math.floor()是向下取整
          Math.round()是四舍五入

          posted on 2009-01-10 17:11 NWU紫氣東來 閱讀(1773) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巴彦县| 阿拉善右旗| 怀柔区| 留坝县| 安庆市| 祁连县| 婺源县| 榆社县| 临洮县| 田东县| 田阳县| 同心县| 孟连| 泰州市| 泰顺县| 青州市| 霞浦县| 遂溪县| 宜都市| 鞍山市| 郑州市| 黄浦区| 高淳县| 青龙| 广宁县| 炎陵县| 凌海市| 吐鲁番市| 家居| 洪雅县| 鲜城| 福建省| 花莲县| 建湖县| 蒙自县| 高雄县| 抚顺县| 桐乡市| 无棣县| 泌阳县| 神木县|