Python / Javascript编号精度

时间:2016-07-29 09:12:51

标签: javascript python

这个问题可能已经存在,但无法找到我的具体问题。

我有两个号码要添加,我不想使用 round()功能,因为我正在使用钱。

1.70 + 1.44 = 3.14 //Returns 3.1399999999999997
1.70 + 1.45 = 3.15 //Returns the correct answer
1.70 + 1.37 = 3.07 //Returns 3.0700000000000003

我在Javascript中尝试过但仍然存在同样的问题。

3 个答案:

答案 0 :(得分:1)

由于您正在使用资金,因此请始终使用Python中的decimal.Decimal类。

答案 1 :(得分:0)

使用parseFloat来精确:

parseFloat(number).toFixed(precision);

E.g。

parseFloat(1.70 + 1.37).toFixed(2);  // RETURN 3.07

答案 2 :(得分:0)

您可以实现此目的的一种方法是将所需的值乘以(10 *精度),然后将结果除以(10 *精度)。

  • ((1.70 * 100)+(1.37 * 100))/ 100 = 3.07
  • ((1.70 * 100)+(1.45 * 100))/ 100 = 3.15
  • ((1.70 * 100)+(1.44 * 100))/ 100 = 3.14

您可以添加一种方法来帮助您保持简单。