У меня есть следующий сценарий Python:вытяжкойСтолы с плавающей точкой точность в (казалось бы) бесконечный цикл
x = 300000000.0
while (x < x + x):
x = x + x
print "exec: " + str(x)
print "terminated" + str(x)
Это, казалось бы, бесконечный цикл, заканчивается довольно быстро, если х является числом с плавающей точкой. Но если я заменю x на 300000000 вместо этого, он попадает в бесконечный цикл (пробегает больше минуты в моем тесте).
Я думаю, что это связано с тем, что он исчерпывает точность числа с плавающей запятой, которое может быть представлено в памяти. Может ли кто-нибудь дать более подробное объяснение, почему это так?
проголосовал за правильный ответ, так как на самом деле почему он объясняет, что он не заканчивается для целочисленного случая, где другие ответы только объясняют очевидное, что он заканчивается, когда x = inf, если x является поплавком –