【问题标题】:Using Math.round in javascript adds weird number of 0s at the end [duplicate]在 javascript 中使用 Math.round 在末尾添加了奇怪的 0 [重复]
【发布时间】:2012-10-06 19:01:29
【问题描述】:

可能重复:
Is JavaScript’s Math broken?

我正在使用 Math.round 对数字进行四舍五入,由于某种原因,它在末尾添加了奇怪数量的 0,这些 0 不应该存在。这是我的代码:

return Math.round($digit * 1000) / 1000; 

我希望数字有 3 个小数点

示例:

  Math.round(29.469 * 1000) / 1000 = returns this value: 29.469000000000023 

似乎无法弄清楚为什么。 有没有不同的方法将小数四舍五入到某个小数点?我需要 3 个小数点。或者也许修剪第三位小数后的所有内容?这将是完美的取返回的数字并在小数点后三位修剪所有内容。

【问题讨论】:

  • 为了防止定义错误,您可以转换为字符串,然后取子字符串。
  • 我如何修剪字符串中小数点后第三位的所有内容
  • Math.round(29.469)在什么浏览器中返回29.469000000000023?
  • 最接近 29.469 的可表示 IEEE double 是 29.469000000000000119371179607696831226348876953125。
  • 我无法重现这个 - jsfiddle.net/daK3v

标签: javascript floating-point rounding digits decimal


【解决方案1】:
yourVariable.toFixed(3);

会给你你想要的。

MDN docs

【讨论】:

  • toFixed 在所有浏览器中都没有很好地实现,所以我尽量避免使用它
  • @Giorgi。就我所见,它在所有主流浏览器中都得到了很好的支持。
猜你喜欢
  • 2016-03-27
  • 1970-01-01
  • 2019-04-20
  • 2010-10-23
  • 2017-08-16
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多