Mosquito323

          2009年1月10日 #

          parseFloat的精度問題

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

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

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

          needPay的正確結(jié)果應(yīng)該是76.93元  但是運(yùn)行后發(fā)現(xiàn)needPay為76.93000000000001 
          此情況可通過 toFixed(n)  方法修正 但是這個(gè)方法對(duì) js版本要求較高 不能兼容ie5

          另一個(gè)解決方案是: 將元為單位的金額乘以100換算為分進(jìn)行計(jì)算

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

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

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

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

          僅列出標(biāo)題  
          主站蜘蛛池模板: 濉溪县| 肇庆市| 兴业县| 塔城市| 通化县| 海淀区| 县级市| 科尔| 化州市| 溧阳市| 英吉沙县| 昌乐县| 浦北县| 革吉县| 连江县| 靖远县| 博野县| 密山市| 黑山县| 平潭县| 绍兴市| 海安县| 准格尔旗| 南昌县| 霸州市| 页游| 库尔勒市| 阆中市| 商河县| 黄骅市| 贺兰县| 肇庆市| 兴和县| 蒙自县| 赣州市| 石棉县| 天气| 马鞍山市| 渝北区| 满洲里市| 宁阳县|