今日免费次数已满, 请开通会员/明日再来
16.181 to 16.18
16.184 to 16.18
16.185 to 16.19
16.187 to 16.19
我找到了一些答案,但是大多数都没有将16.185四舍五入至16.19。
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!但请记住,该值将作为字符串返回。如果你想对它进行进一步操作,你必须将其解析为浮点数 :)
现在作为函数:
function trueRound(value, digits){
return (Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits);
}
function trueRound(value, digits){
return ((Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits)) * 1;
}
使用-
Decimal ds=new Decimal(##.##);
String value=ds.format(inputnumber);
这对我的情况非常完美,希望它能百分之百地工作。
您可以尝试一个更简单的函数...
function roundOffTo(number, place) {
return Math.round(number * place) / place;
}
[编辑] 这段代码对于像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) ;
Math.round(16.185*100) + ' ' + Math.round(1618.5)
... 返回的结果是 1618 1619
... 完全不一致。 - Salman Afunction formatNumber(myNum, numOfDec) {
var dec = Math.pow(10, numOfDec);
return Math.round(myNum * dec + 0.1) / dec;
}
return Math.round(myNum * dec + 0.1) / dec;
- Dmitry Evseev 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))
16.185 * 100
=1618.4999999999998
,而在 IE 中却是1618.5
。非常奇怪。 - Salman A