在比较浮点数时,由于浮点数的表示是有限的,存在精度问题,因此直接比较浮点数可能会导致错误的结果和精度变化。可以采用以下方法来解决这个问题:
def compare_floats(a, b, epsilon=1e-9):
return abs(a - b) < epsilon
# 示例
a = 0.1 + 0.1 + 0.1
b = 0.3
if compare_floats(a, b):
print("a 和 b 相等")
else:
print("a 和 b 不相等")
from decimal import Decimal
a = Decimal('0.1') + Decimal('0.1') + Decimal('0.1')
b = Decimal('0.3')
if a == b:
print("a 和 b 相等")
else:
print("a 和 b 不相等")
import numpy as np
a = 0.1 + 0.1 + 0.1
b = 0.3
if np.isclose(a, b):
print("a 和 b 相等")
else:
print("a 和 b 不相等")
通过以上方法,可以避免直接比较浮点数时出现错误的结果和精度变化的问题。
上一篇:比较浮点数和小整数的问题
下一篇:比较浮点数之和