слишком много нулей после точки, более детально смотреть тут
https://docs.python.org/3/tutorial/floatingpoint.html и тут
https://docs.python.org/3/library/sys.htmlпример:
import sys
print(0.5+sys.float_info.epsilon)
>>>
0.5000000000000002
если вкратце то работа с любыми числами с плавающей запятой выполняется с погрешностями.
Машинный эпсилон - это минимальная разница между числами, которую компьютер в состоянии различить.
Это конечно не совсем так, числа меньше FLT_EPSILON вполне представимы в float и вы вполне можете с ними работать. Но плотность чисел представимых в float не постоянна. Расстояние между 2 такими соседними числами может быть меньше FLT_EPSILON. А у вас инкремент порядка 10**-30, вот пайтон и ложит болт на ваш инкремент. И цикл у вас создает постоянно одну и туже папку.
Так что вам нужно менять алгоритм вашей программы.
например использовать decimal както так:
import hashlib
import os
from decimal import Decimal, getcontext
getcontext().prec = 29
i = Decimal(0.060000000000000000000000000000).quantize(Decimal('0.000'))
end = Decimal(0.0666666666666666666666666666667)
while i <= end:
formatted = str(format(i, ".30f"))
string = hashlib.sha224(formatted.encode('UTF-8')).hexdigest()
print(i, formatted, string)
#if(os.path.exists("56/" + str(string)) == False):
#os.mkdir('56/' + str(string))
i = i + Decimal(0.000000000000000000000000000001)
print ("OK")
>>>
0.060 0.060000000000000000000000000000 8fa7b78dbccdcc900620e4453060774facd36bd0a446f1f91176d9dd
0.060000000000000000000000000001 0.060000000000000000000000000001 4e4065c98754420c8f49e4dbbb542790bcf25cbd8b391b8bafd61e39
0.060000000000000000000000000002 0.060000000000000000000000000002 a3119e54b99f91eb8151eefd5f69bc68339e0ca47f609c16e633c0d9
.....
подробнее
https://docs.python.org/3/library/decimal.html