Mosquito323

          2009年1月10日 #

          parseFloat的精度問題

          寫js時遇到的問題,已經(jīng)解決,做筆記

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

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

          needPay的正確結(jié)果應該是76.93元  但是運行后發(fā)現(xiàn)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)的計算結(jié)果是7693.000000000001   使用Math.round()方法四舍五入,再除100  即為正確的結(jié)果

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

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

          僅列出標題  
          主站蜘蛛池模板: 大同县| 巫山县| 毕节市| 富裕县| 顺义区| 岑巩县| 吉木乃县| 安宁市| 平谷区| 德兴市| 合江县| 炉霍县| 施秉县| 汉阴县| 武定县| 东城区| 阿克陶县| 赤峰市| 扶余县| 婺源县| 海宁市| 莒南县| 郎溪县| 丰原市| 兰坪| 双牌县| 平和县| 黄陵县| 河南省| 司法| 赫章县| 克山县| 白河县| 大洼县| 洛川县| 涿鹿县| 雅安市| 崇文区| 鄂尔多斯市| 崇州市| 岚皋县|