LINUX.ORG.RU

История изменений

Исправление 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> 

Это потому, что компьютер всё это считает и округляет в двоичном виде. Есть алгоритмы с софтварными операцими над десятичными числами, но они очень медленные.