2013-03-19 28 views
1

我想移動數字的小數位。 我有以下設置。javascript中的數學權力舍入問題

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

我得到以下結果

91301.23999999999 

我想如果我改變股息9130.123

我得到正確的答案,我會得到什麼樣

91301.24 

91301.23

有沒有辦法解決這個問題,或者我錯過了什麼?

+1

使用此來得到結果.. Math.round(dividend * 100)/ 100 – Rinku 2013-03-19 11:34:57

+0

我認爲韋斯利希望移動數字周圍的小數位。所有的答案都是關於四捨五入到固定的小數位數 – Sharun 2013-03-19 11:51:54

回答

1

這是因爲你的紅利是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

2
Math.ceil(91301.23999999999*100)/100 // = 91301.24 
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) 
0

您還可以使用Big.js這是Javascript一個任意精度的數學庫。

那麼你code becomes

var dividend = new Big("9130.124"); 
dividend = dividend.times(new Big(""+Math.pow(10,1))); 
console.log(dividend); 
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任何價值。並且不需要額外的庫