【问题标题】:Math power rounding issue in javascriptjavascript中的数学幂舍入问题
【发布时间】:2013-03-19 11:30:21
【问题描述】:

我正在尝试移动数字周围的小数位。 我有以下设置。

dividend = 9130.124;
numFactor = 1;
dividend = (dividend * Math.pow(10, numFactor));

我得到以下结果

91301.23999999999

我以为我会得到类似的东西

91301.24

如果我将股息更改为9130.123

我得到正确答案91301.23

有没有办法解决这个问题或者我错过了什么?

【问题讨论】:

  • 用这个来得到结果.. Math.round(dividend * 100) / 100
  • 我认为 Wesley 想要移动数字周围的小数位。所有答案都是关于将其四舍五入到固定的小数位数

标签: javascript


【解决方案1】:
Math.ceil(91301.23999999999*100)/100 // = 91301.24

【讨论】:

    【解决方案2】:

    这是因为你的红利是 9130.12399999...所以你必须在更改它之前使用 divide.toFixed()..

    dividend = 9130.12399999
    dividend.toFixed(3); // here dividend will be 9130.124
    numFactor = 1;
    dividend = (dividend * Math.pow(10, numFactor));
    

    你会得到 91301.24

    【讨论】:

      【解决方案3】:

      使用 .toFixed(2) 将值四舍五入为两位数。

      dividend = dividend.toFixed(2);
      

      http://jsfiddle.net/tamilmani/LR79p/

      【讨论】:

        【解决方案4】:
        dividend=9130.124;
        numFactor=1;
        dp=3;
        dividend = (dividend * Math.pow(10,numFactor));
        dividend = Math.round(dividend * Math.pow(10,dp) + 0.5) / Math.pow(10, dp)
        

        【讨论】:

          【解决方案5】:

          您还可以使用Big.js,这是一个用于 Javascript 的任意精度数学库。

          然后你的code becomes:

          var dividend = new Big("9130.124");
          dividend = dividend.times(new Big(""+Math.pow(10,1)));
          console.log(dividend);
          

          【讨论】:

            【解决方案6】:

            试试这个:

                dividend = 9130.124345;
                dividend = dividend.toString();
                numFactor = 2;//can be changed as u need
            
            
                var indx = dividend.indexOf( '.' );
            
            
                dividend = dividend.replace( /\./g, "" );//remove .
                dividend = dividend.substring( 0, indx + numFactor ) + '.' +
                                    dividend .substring( indx + numFactor, dividend.length );
            

            适用于 numFactor 的任何值。并且不需要额外的库

            【讨论】:

              猜你喜欢
              • 2021-10-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-16
              • 1970-01-01
              • 2019-02-06
              • 2016-11-03
              • 2020-09-17
              相关资源
              最近更新 更多