首页 > 解决方案 > Javascript - toFixed() 0.5 问题

问题描述

我有一个案例,我想将小数点四舍五入到小数点后 2 位。现在 .toFixed(2) 工作正常,但是对于 0.455 我想得到 0.45 而不是 0.46

有什么快速的解决方案吗?如果能解决这个问题,我可以使用 Lodash。

例如,我想要以下内容。

0.455 > 0.45

0.456 > 0.46

0.4549 > 0.45

标签: javascript

解决方案


乘以 100,用 floor 向下舍入,用 100 除,用 toFixed 格式化。

function roundDownToFixed2(v) {
  return (Math.floor(v * 100) / 100).toFixed(2);
}
> roundDownToFixed2(0.455)
'0.45'

一个更通用的版本是

function roundDownToFixed(v, d=2) {
  const mul = Math.pow(10, d);
  return (Math.floor(v * mul) / mul).toFixed(d);
}
> roundDownToFixed(0.455, 2)
'0.45'
> roundDownToFixed(0.4555, 3)
'0.455'

推荐阅读