История изменений
Исправление ados, (текущая версия) :
CL-USER> (loop :for i :downfrom 30 :to 29.9 :by 0.01
:do (print i))
30
29.99
29.98
29.97
29.96
29.949999
29.939999
29.929998
29.919998
29.909998
NIL
CL-USER>
Это потому, что компьютер всё это считает и округляет в двоичном виде. Есть алгоритмы с софтварными операциями над десятичными числами, но они очень медленные.
Исходная версия ados, :
CL-USER> (loop :for i :downfrom 30 :to 29.9 :by 0.01
:do (print i))
30
29.99
29.98
29.97
29.96
29.949999
29.939999
29.929998
29.919998
29.909998
NIL
CL-USER>
Это потому, что компьютер всё это считает и округляет в двоичном виде. Есть алгоритмы с софтварными операцими над десятичными числами, но они очень медленные.