3

我知道由于计算机处理它们的方式等原因,JavaScript 存在小数问题。我的问题是在计算器 Web 应用程序的上下文中应该如何处理它们?

var exampleDecimal = 1.2 + 0.64; // 1.8399999999999999 - INCORRECT

我不知道用户可能会输入什么,他们可能会输入:

var exampleDecimal = (1.232 + 10.64) * 2 - 18.2 / 2.2; // 15.471272727272728 - CORRECT

我研究了这个主题,发现 JavaScript 没有一个简单的解决方案可以在基本计算器的上下文中准确处理小数。有 jQuery 吗?我在 jQuery 的参考网站上找不到解决方案,但我对 jQuery 的经验很少。

我发现的每个 JavaScript 计算器教程都错了 1.2 + 0.64。

4

1 回答 1

1

jQuery 不会帮助你,但你可以使用一个库来处理这个问题。一种流行的方法是BigDecimal

var result = new BigDecimal('1.2').add(new BigDecimal('0.64'));
exampleDecimal.toString(); // 1.84

此语法可能有点冗长,但您可以将其包装得更紧凑:

var dec = function (spec) {
  'use strict';
  if (this === undefined) { return new BigDecimal(spec); }
  return new BigDecimal(spec);
};

然后按如下方式使用它:

var result = dec('1.2').add(dec('0.64'));
于 2013-09-09T07:38:36.420 回答