Что делать, если rtos выдает “не те” результаты

Сегодня возник вопрос - насколько можно доверять результатам rtos? Когда разобрались, попросили нарисовать статейку. Выполняем :)

Казалось бы - а в чем вопрос-то? Ан нет, в разных файлах можно получить разное поведение:

1
2
3
4
5
(rtos 0.5 2 6)
"0.5000000"
"0.5"
".5000000"
".5"

Это как понимать? А все верно, результат rtos зависит от значения системной переменной DIMZIN.

В качестве иллюстрации

1
2
3
4
5
6
7
8
9
(defun t1 (/ value)
  (setq sys (getvar "dimzin"))
  (foreach value '(0 1 2 3 4 8 12)
    (setvar "dimzin" value)
    (princ (strcat "\n" (itoa value) " => " (rtos 0.5 2 6)))
  ) ;_ end of foreach
  (setvar "dimzin" sys)
  (princ)
) ;_ end of defun

И результаты:

1
2
3
4
5
6
7
8
9
_$ (t1)

0 => 0.500000
1 => 0.500000
2 => 0.500000
3 => 0.500000
4 => .500000
8 => 0.5
12 => .5

Соответственно, играясь с DIMZIN, можно добиться от rtos нормального предсказуемого поведения.



Поделитесь своим мнением


Я не робот.