【发布时间】:2014-07-10 07:18:48
【问题描述】:
我编写了以下代码来生成带有浮点数的范围:
def drange(start, stop, step):
result = []
value = start
while value <= stop:
result.append(value)
value += step
return result
当用这个语句调用这个函数时:
print drange(0.1,1.0,0.1)
我希望得到这个:
[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
但我获得了以下信息:
[0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]
这是为什么?我该如何解决?
【问题讨论】:
-
这里很好地解释了浮点运算在 Python 中的工作原理docs.python.org/2/tutorial/floatingpoint.html
-
@timgeb 不,对于大多数人的需求来说,这是一个糟糕的资源。有better options。
-
我不介意大多数人在遇到此类问题时,对搜索浮点表示等主题的了解不够。然而,这个精确的总和,在 Python 中,已经有了一个已回答的问题。将来,在询问之前搜索。
标签: python floating-point append decimal