Mosquito323

          2009年1月10日 #

          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 @ 2009-01-10 17:11 NWU紫氣東來 閱讀(1773) | 評論 (0)編輯 收藏

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          主站蜘蛛池模板: 宁武县| 荔波县| 上林县| 威海市| 久治县| 呈贡县| 龙里县| 安乡县| 台北市| 芮城县| 桃江县| 班戈县| 广平县| 佳木斯市| 金塔县| 宿州市| 新乡市| 施秉县| 永寿县| 大名县| 永和县| 慈溪市| 乐平市| 华安县| 内黄县| 武定县| 称多县| 大关县| 赤水市| 通山县| 上犹县| 翁牛特旗| 邵武市| 托克逊县| 徐水县| 徐闻县| 安平县| 章丘市| 宾阳县| 八宿县| 方山县|