在javascript中将数值舍入到小数点后2位

时间:2018-05-24 18:29:56

标签: javascript rounding

我想在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

任何人都可以告诉我如何解决这个问题。

3 个答案:

答案 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函数比内置库更精确。我已经使用它测试了你的代码,它确实有用!