我想在javacript中将数值舍入到最多2位小数。 请尝试访问以下网址 https://www.jsnippet.net/snippet/1665/1/Rounding-a-value-upto-2-decimal-places
如果您注意到我正在尝试舍入以下值的代码 3.225,4.225和5.225
如果您注意到结果,则将3.225四舍五入为3.23,这是正确的。 另外5.225是舍入到5.23,这也是正确的但4.225正在四舍五入到4.22而不是4.23
任何人都可以告诉我如何解决这个问题。
答案 0 :(得分:1)
试试这个..
Number(Math.round(3.225+'e2')+'e-2');
答案 1 :(得分:1)
这对Javascript来说是一项痛苦的任务。根据我的经验,我做这样的事情:
function round(n, places = 2) {
var epsilon = Number.EPSILON*1000;
var exponent = Math.pow(10, places);
var integral = Math.round((n+epsilon) * exponent);
return integral/exponent;
}
epsilon
是一个非常小的数字,用于补偿JavaScript中浮点数的这种行为。
注意:请不要将此功能用于敏感数据,只是非常简单的舍入功能。
如果您必须处理敏感数据,请使用MathJS作为用户 King 建议。
答案 2 :(得分:0)
使用提供here的mathjs库。此库提供的round函数比内置库更精确。我已经使用它测试了你的代码,它确实有用!