我想移動數字的小數位。 我有以下設置。javascript中的數學權力舍入問題
dividend = 9130.124;
numFactor = 1;
dividend = (dividend * Math.pow(10, numFactor));
我得到以下結果
91301.23999999999
我想如果我改變股息9130.123
我得到正確的答案,我會得到什麼樣
91301.24
91301.23
有沒有辦法解決這個問題,或者我錯過了什麼?
我想移動數字的小數位。 我有以下設置。javascript中的數學權力舍入問題
dividend = 9130.124;
numFactor = 1;
dividend = (dividend * Math.pow(10, numFactor));
我得到以下結果
91301.23999999999
我想如果我改變股息9130.123
我得到正確的答案,我會得到什麼樣
91301.24
91301.23
有沒有辦法解決這個問題,或者我錯過了什麼?
這是因爲你的紅利是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
Math.ceil(91301.23999999999*100)/100 // = 91301.24
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一個任意精度的數學庫。
那麼你code becomes:
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任何價值。並且不需要額外的庫
使用此來得到結果.. Math.round(dividend * 100)/ 100 – Rinku 2013-03-19 11:34:57
我認爲韋斯利希望移動數字周圍的小數位。所有的答案都是關於四捨五入到固定的小數位數 – Sharun 2013-03-19 11:51:54