为什么 Python 在计算中将精确小数转换为近似值?

Why does Python transform exact decimals to approximations in calculations?

我编写此函数是为了避免在计算器上打字并加快我的作业速度,但是发生了一些非常奇怪的事情:

def G(x):
  return 1 - x ** 2 - (1-x) ** 2

G(1/5) 给出 0.31999999999999984

但显然是 25/25 - 1/25 - 16/25 是 8/25 = 0.32

您可以使用 decimal 模块作为解决方法。

The decimal module provides support for fast correctly-rounded decimal floating point arithmetic. It offers several advantages over the float datatype.

from decimal import Decimal;

print(float(G(Decimal(1)/Decimal(5))))
0.32