限制JavaScript中的Float精度

时间:2013-11-14 14:47:01

标签: javascript floating-point fixed-point

我正在使用JavaScript中的函数。我拿了两个变量x和y。

我需要将两个变量分开并在屏幕上显示结果:

x=9; y=110;
x/y;

然后我得到结果:

  

0.08181818181818181

我需要使用我在其他帖子中找到的BigDecimal.js等内容。

我希望结果显示为:

  

0.081

5 个答案:

答案 0 :(得分:18)

尝试这个,它在昏迷后四舍五入到数字:

(x/y).toFixed(3);

现在你的结果将是一个字符串。如果你需要浮动只需:

parseFloat((x/y).toFixed(3));

答案 1 :(得分:4)

你可以这样做

Math.round(num * 1000) / 1000

这将正确地围绕它。如果您希望截断而不是实际舍入,则可以使用floor()代替round()

答案 2 :(得分:4)

使用此选项将0.818181 ...舍入为0.81:

x = 9/110;
Math.floor(x * 1000) / 1000;

答案 3 :(得分:2)

试试这个

var num = x/y;
parseFloat((Math.round(num * 100) / 100).toPrecision(3))

答案 4 :(得分:0)

如果我使用简单的表达式,结果可能是意外的:

const fraction = (value) => {
  return value - Math.floor(value);
}
fraction(1 / 3);
=> 0.333333333333 // is Right
fraction(22 / 3);
=> 0.33333333333333304 // is Unexpected

所以,我的可靠表达是:

const fraction = (value) => {
  return parseFloat(value.toString().replace(/^\d+$/, '0').replace(/^.+?(?=\.)/, ''))
}
fraction(22 / 3);
=> 0.333333333333333
fraction(1111)
=> 0
fraction(.122211)
=> 0.122211
fraction(11111.122211)
=> 0.122211
fraction(11111.12)
=> 0.12
fraction(11111.11112)
=> 0.11112