我需要使用javascript將十進制值舍入到小數位。使用javascript捨去十進制數
防爆,:
16.181 to 16.18
16.184 to 16.18
16.185 to 16.19
16.187 to 16.19
我已經找到了一些答案,但大多不四捨五入16.185到16.19 ..
我需要使用javascript將十進制值舍入到小數位。使用javascript捨去十進制數
防爆,:
16.181 to 16.18
16.184 to 16.18
16.185 to 16.19
16.187 to 16.19
我已經找到了一些答案,但大多不四捨五入16.185到16.19 ..
(Math.round((16.185*Math.pow(10,2)).toFixed(1))/Math.pow(10,2)).toFixed(2);
如果你的價值,例如16.199正常回合將回到16.2 ...但用這種方法你會得到最後也是0,所以你看到16.20!但請記住,該值將以字符串形式返回。如果你想用它進行進一步的操作,你必須parsefloat吧:)
現在的功能:
function trueRound(value, digits){
return (Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits);
}
[編輯] 此代碼不會爲工作值等18.185,如18.185 * Math.pow(10,2)被評價爲1818.4999999999997
Math.round(<value> * Math.pow(10,<no_of_decimal_places>))/Math.pow(10,<no_of_decimal_places>) ;
例如: 1234.5678 - > 2位小數 - > 1234.57
Math.round(1234.5678 * Math.pow(10,2))/Math.pow(10,2) ;
我寫了10^
這也是行不通的。它以16.18爲16.185。我需要圍繞它作爲16.19 – Prasad 2011-04-04 07:05:29
@Prasad:嗯,你是對的...奇怪 – 2011-04-04 07:11:15
function formatNumber(myNum, numOfDec) {
var dec = Math.pow(10, numOfDec);
return Math.round(myNum * dec + 0.1)/dec;
}
這不起作用。它以16.18爲16.185。我需要把它作爲16.19。 – Prasad 2011-04-04 07:03:53
嗯..我看到)這是問題 – 2011-04-04 07:06:26
你知道,你可以這樣做,爲你的值增加額外的0.1,以防止有5個值的情況:'返回Math.round(myNum * dec + 0.1)/ dec; ' – 2011-04-04 07:10:06
您正在使用四捨五入的代碼是正確的。但爲了獲得理想的結果,請從代碼中刪除.toFixed(numOfDec)。
功能:
功能formatNumber(myNum的,numOfDec){
var decimal = 1
for (i = 1; i <= numOfDec; i++)
decimal = decimal * 10 //The value of decimal determines the number of decimals to be rounded off with (.5) up rule
var myFormattedNum = Math.round(myNum * decimal)/decimal
return (myFormattedNum)
}
希望它可以幫助你以某種方式:)
parseFloat(myNum.toFixed(numOfDec))
感謝@ayk的回答,我將您的功能修改爲:
function trueRound(value, digits){
return ((Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits)) * 1;
}
,只需加上「* 1」 因爲你們的,你寫的,16.2成爲16.20 我也不在後面需要的零。
使用 -
Decimal ds=new Decimal(##.##);
String value=ds.format(inputnumber);
這將在我的情況很好地工作,希望它會工作100%
@mplungjan,我不要求Math.round之間」的區別(0)和toFixed( 0)」。如果你看過我的問題,你可以理解我在16.185到16.19之間的問題。 – Prasad 2011-04-04 07:12:12
我真的很驚訝地發現,JavaScript在FF/Chrome中說'16.185 * 100' ='1618.4999999999998',IE中是'1618.5'。很奇怪。 – 2011-04-04 07:12:47
你是對的。我的錯誤 - 但必須是重複的東西;) – mplungjan 2011-04-04 08:21:21