为什么 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
我编写此函数是为了避免在计算器上打字并加快我的作业速度,但是发生了一些非常奇怪的事情:
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