Zobrazit plnou verzi příspěvku: Zaokrouhlení

PepaR
04.01.2011, 09:23
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].

PepaR
04.01.2011, 16:30
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ů.

PepaR
04.01.2011, 18:13
Poždavek jednoho kolegy, který asi neumí kreslit přesně ;(.

PepaR
04.01.2011, 18:19
[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í.

PepaR
04.01.2011, 18:37
No jo, to bude ono. Školácká chyba. Moc děkuju.

iand
05.01.2011, 09:23
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

PepaR
05.01.2011, 19:14
Děkuji za tip.

alfred
06.01.2011, 07:15
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]