数学权力四舍五入的问题

时间:2013-03-19 11:30:21

标签: javascript

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

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

我得到以下结果

91301.23999999999

我以为我会得到像

这样的东西
91301.24

如果我将红利改为9130.123

我得到了正确答案91301.23

有没有办法绕过这个或者我错过了什么?

6 个答案:

答案 0 :(得分:2)

Math.ceil(91301.23999999999*100)/100 // = 91301.24

答案 1 :(得分:1)

这是因为你的股息是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

答案 2 :(得分:1)

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

dividend = dividend.toFixed(2);

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

答案 3 :(得分:1)

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)

答案 4 :(得分:0)

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

然后是你的code becomes

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

答案 5 :(得分:0)

试试这个:

    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的任何值。而且不需要额外的库