javascript中的数学能力四舍五入问题

Math power rounding issue in javascript

本文关键字:能力 四舍五入 问题 javascript      更新时间:2023-09-26

我正在尝试移动数字周围的小数点。我设置了以下内容:

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

我得到以下结果

91301.23999999999

我想我会得到像

这样的东西
91301.24

如果我把股利换成9130.123

我得到了正确答案91301.23

是有一个方法围绕这个还是我错过了什么?

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

这是因为你的股息是9130.12399999…所以你必须在改变它之前使用divided.toFixed() .

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

你会得到91301.24

使用. tofixed(2)将值四舍五入到两位数字

dividend = dividend.toFixed(2);
http://jsfiddle.net/tamilmani/LR79p/

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)

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

那么你的代码变成:

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

试试这个:

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