zoukankan      html  css  js  c++  java
  • 小结一下:javascript 金额计算

    今天在项目中开发一个计算金额的功能,开始我是这样做的:

    eg:

    var amount += parseFloat( 0.01+0.02);

    结果:0.0300000000000000001

    为什么呢?

    搜了一下parseFloat主题:

    1.  parseFloat() 函数 ---》 解析字符串 ---》 返回浮点数。

    在解析过程中遇到了

      正负号(+ 或 -)、

      数字 (0-9)、

      小数点、

      科学记数法中的指数(e 或 E)

      以外的字符

      则它会忽略该字符以及之后的所有字符。同时参数字符串首位的空白符会被忽略。

      第一个字符不能被解析成为数字---》返回 NaN。

    恩。。。。。感觉还是理解不深,为什么会是那么一长串,精度问题,看看原理怎样。。。。

    但是。。。。。没有找到根本的清晰的解释

    那就暂时看看解决方案吧:

    (1)

      toFixed(n)    但是这个方法对 js版本要求较高 不能兼容ie5

    (2)

      var price = 5.02
      var quantity = 4
      var amount= Math.round(parseFloat(price*100 * quantity))/100;

      Math.ceil() 是向上取整
      Math.floor()是向下取整
      Math.round()是四舍五入

    欢迎提供方案,解答疑惑呀。。。。。。。

  • 相关阅读:
    osu合集(期望dp)
    P1640 [SCOI2010]连续攻击游戏
    P2155 [SDOI2008]沙拉公主的困惑
    P3419 [POI2005]SAMToy Cars / SP688 SAM Toy Cars
    P3586 [POI2015]LOG
    P4147 玉蟾宫
    P4454 [CQOI2018]破解DH协议
    射击小游戏一02(玩家和怪物添加)
    ASCII,Unicode和UTF8
    Android中MenuInflater实例
  • 原文地址:https://www.cnblogs.com/youlanlan/p/4354393.html
Copyright © 2011-2022 走看看