本文介绍了浮点数的range()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Python中是否有 range()
等于浮点数?
Is there a range()
equivalent for floats in Python?
>>> range(0.5,5,1.5)
[0, 1, 2, 3, 4]
>>> range(0.5,5,0.5)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
range(0.5,5,0.5)
ValueError: range() step argument must not be zero
推荐答案
如评论所述,这可能会产生不可预测的结果,例如:
As the comments mention, this could produce unpredictable results like:
>>> list(frange(0, 100, 0.1))[-1]
99.9999999999986
到要获得预期的结果,可以在此问题中使用其他答案之一,或者如@Tadhg所述,可以将 decimal.Decimal
用作跳转
参数。请确保使用字符串而不是浮点数对其进行初始化。
To get the expected result, you can use one of the other answers in this question, or as @Tadhg mentioned, you can use decimal.Decimal
as the jump
argument. Make sure to initialize it with a string rather than a float.
>>> import decimal
>>> list(frange(0, 100, decimal.Decimal('0.1')))[-1]
Decimal('99.9')
甚至:
import decimal
def drange(x, y, jump):
while x < y:
yield float(x)
x += decimal.Decimal(jump)
然后:
>>> list(drange(0, 100, '0.1'))[-1]
99.9
这篇关于浮点数的range()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!