1

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

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

我得到以下结果

91301.23999999999

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

91301.24

如果我将股息更改为9130.123

我得到正确答案91301.23

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

4

6 回答 6

2
Math.ceil(91301.23999999999*100)/100 // = 91301.24
于 2013-03-19T11:35:40.890 回答
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)
于 2013-03-19T11:45:19.263 回答
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

于 2013-03-19T11:41:57.043 回答
1

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

dividend = dividend.toFixed(2);

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

于 2013-03-19T11:42:23.053 回答
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 的任何值。并且不需要额外的库

于 2013-03-19T12:31:46.573 回答
0

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

然后你的代码变成

var dividend = new Big("9130.124");
dividend = dividend.times(new Big(""+Math.pow(10,1)));
console.log(dividend);
于 2013-03-19T11:59:07.540 回答