Я только новичок, но у меня была такая же проблема при моделировании некоторых вычислений. Вот как я пытался решить эту проблему, которая, кажется, работает с десятичными шагами.
Я также довольно ленив, и поэтому мне было сложно написать свою собственную функцию диапазона.
По сути, я изменил xrange(0.0, 1.0, 0.01)
на xrange(0, 100, 1)
и использовал деление на 100.0
внутри цикла.
Меня также беспокоило, будут ли ошибки округления. Поэтому я решил проверить, есть ли такие. Теперь я слышал, что если, например, 0.01
из расчета не совсем поплавок 0.01
, сравнение их должно возвращать False (если я ошибаюсь, пожалуйста, дайте мне знать).
Поэтому я решил проверить, будет ли мое решение работать для моего диапазона, выполнив короткий тест:
for d100 in xrange(0, 100, 1):
d = d100 / 100.0
fl = float("0.00"[:4 - len(str(d100))] + str(d100))
print d, "=", fl , d == fl
И это напечатало True для каждого.
Теперь, если я все понял неправильно, пожалуйста, дайте мне знать.