Zobrazit plnou verzi příspěvku: Zaokrouhlení
Dobrý den,
opět prosba a dotaz na zdatné to jedince v oboru programování. Lze docílit aby funkce kotvysk.lsp (viz archiv) vkládala hodnotu souřadnice Y zaokrouhlenou v místě X ... 0,00X?
uploads/20110104_092257_kotvysk.zip
Předem děkuji za pomoc
Vladimír Michl
04.01.2011, 13:04
Nezkoumal jsem to do detailů, ale pokud vypusíte tu "3" ve funkci (rtos), měl by být počet desetinných míst závislý na standardním nastavení proměnné [VAR]LUPREC[/VAR].
Na to jsem taky myslel, ale to není řešením, protože potřebuji zobrazit číslo na tisíciny (tři desetnná místa), ale zaokrouhlení potřebuju na setiny.
Příklad:
1,232 = 1,230
1,235 = 1,240
Vladimír Michl
04.01.2011, 17:46
Tak to zaokrouhlete na setiny a připište "0":
[CODE](strcat (rtos 1.232 2 2) "0")[/CODE]
Radim Cech
04.01.2011, 17:55
Zdravím, nedá mi to se nezeptat, co to je zase "úlet".
Proč se to má zaokrouhlovat na setiny, když to potřebujete zobrazit na tisíciny? To je "logika" jak u poslanců.
Poždavek jednoho kolegy, který asi neumí kreslit přesně ;(.
[QUOTE=Vladimír Michl]Tak to zaokrouhlete na setiny a připište "0":
[CODE](strcat (rtos 1.232 2 2) "0")[/CODE][/QUOTE]
Tak jsem to zkoušel ale něco je špatně, funkce hlásí chybu.
[CODE]
(cond ((> y 0) (setq text (strcat "+" (rtos y 2 2) "0"))) ((= y 0) (setq text "0,000")) ((< y 0) (setq text (strcat (rtos y 2 2) "0")) ) ; cond
[/CODE]
uploads/20110104_181738_kotvysk.lspPepaR2011-01-04 18:20:13
Vladimír Michl
04.01.2011, 18:31
U toho řádku "< y" jste nějak na štíru se závorkami - jedna ukončovací chybí.
No jo, to bude ono. Školácká chyba. Moc děkuju.
PepaR: Zaokrouhlení:
Zkuste tohle, je to perfektní
[code]
(defun ROUND (num frac / half over)
;;; (ROUND NUM FRAC) returns NUM rounded to the nearest FRAC.
;;; Examples: (ROUND 15.2 0.25) returns 15.25
;;; (ROUND 15.1 0.25) returns 15.00
;;; By Duff Kurland - Autodesk, Inc. August 22, 1986
(if (minusp num)
(- (round1 (- num) frac))
(round1 num frac)
) ;_ end of if
) ;_ end of defun
(defun round1 (num frac / half over)
(setq half (/ frac 2.0))
(setq over (rem num frac)) ; Get remainder
(if (>= over half)
(+ num frac (- over)) ; Round up
(- num over) ; Round down
) ;_ end of if
) ;_ end of defun
[code]
iand2011-01-05 10:50:41
Vim, ze je jiz problem vyresen, ale jen nabizim jeste jednu jednoduchou moznost. Pokud je promenna x s real cislem:(rtos (atof (rtos x 2 2)) 2 3)"vnitrni" rtos zaokrouhli na potrebny pocet cisel a pritom zaokrouhliatof prevede string zpet na cislo"vnejsi" rtos doplni nuly a prevede na stringPozor na nastaveni promenne [VAR]DIMZIN[/VAR]