CADsite forum

AutoCAD => Autolisp => Topic gestart door: delangstevandestraat op ma 05 09 2016, 16:02:58

Titel: atof rond ongewild af OPLOSSING ONMOGELIJK MAAR GEEN PROBLEEM
Bericht door: delangstevandestraat op ma 05 09 2016, 16:02:58
een kort vraagje :

(atof "1041.8957")
geeft als antwoord 1041.9

en dat wil ik niet ...

ik weet dat je bij rtos kan kiezen hoeveel digits er moeten omgevormd worden, maar dit is de omgekeerde richting

ik wil van "1041.8957" naar 1041.8957 geraken ?

alvast bedankt
Titel: Re: atof rond ongewild af
Bericht door: gery op ma 05 09 2016, 18:40:29
(rtos (atof "1041.8957") 2 4)
Het laatste argument (4) geeft het aantal decimalen, max. is 16.
Titel: Re: atof rond ongewild af
Bericht door: delangstevandestraat op di 06 09 2016, 07:34:56
de vraag gaat over ATOF en niet rtos

want de code die jij voorstelt doet niets, gewoon over en weer

ik wil 1041.8957 als antwoord krijgen zonder afronding !
Titel: Re: atof rond ongewild af
Bericht door: Reimer op di 06 09 2016, 07:55:32
Ik meende al dat hier al eerder over geschreven was. En zie hier (geheugen hè :) )
http://www.cadsite.be/smf/index.php?topic=3275.msg16595#msg16595 (http://www.cadsite.be/smf/index.php?topic=3275.msg16595#msg16595)

Ik heb het niet nagelezen, kijk even of je hier een antwoord vindt.

Reimer.
Titel: Re: atof rond ongewild af
Bericht door: gery op di 06 09 2016, 08:01:15
Citaat van: delangstevandestraat op di 06 09 2016, 07:34:56
de vraag gaat over ATOF en niet rtos

want de code die jij voorstelt doet niets, gewoon over en weer

ik wil 1041.8957 als antwoord krijgen zonder afronding !
Bij mij werkt die code perfect, ik krijg 1041.8957 zonder afronding.

Edit: ik denk dat ik u verkeerd begrepen heb, je wil dus de aanhalingstekens weg? De waarde waarvan je de aanhalingstekens weg wil, is dat normaal een variabele?
Titel: Re: atof rond ongewild af
Bericht door: Reimer op di 06 09 2016, 09:32:05
Even googlen geeft veel info. (bv. http://www.cadtutor.net/forum/showthread.php?58990-Atof (http://www.cadtutor.net/forum/showthread.php?58990-Atof))
De nauwkeurigheid blijft wel bestaan maar wordt niet getoont.

Reimer.
Titel: Re: atof rond ongewild af
Bericht door: bart op di 06 09 2016, 10:13:41
(atof "1.12345678")

probeer deze eens voor de fun geeft bij mij wel 5 cijfers achter te komma  :shock:

Er is best veel te vinden op het net over dit fenomeen.
diverse oplossingen maar geen simpele systeemvariabele of iets dergelijks.

Als je de waarde in een variabele stopt rekent hij wel met het volledige getal.

Titel: Re: atof rond ongewild af
Bericht door: delangstevandestraat op di 06 09 2016, 11:28:07
@ bart

resultaat : 1.12346  inderdaad 5 cijfers maar dus wel afgerond

dus ook niet compleet ;-(

er is inderdaad veel over te vinden en men haalt er iedere keer rtos bij, maar ik heb nog nergens een oplossing gevonden die me een atof zonder afronding oplevert

ter info: het getal is bij mij een x-waarde van een positie, en als lisp afrond dan klopt de positie dus niet meer..
Titel: Re: atof rond ongewild af
Bericht door: gery op di 06 09 2016, 11:38:25
Kan je de LISP routine posten? Misschien is er een andere oplossing?
Titel: Re: atof rond ongewild af
Bericht door: Reimer op di 06 09 2016, 13:21:40
In de link uit mijn vorige bericht staat dat atof altijd een resultaat van 6 getallen geeft, ongeacht het aantal decimalen. Het getal wordt ook niet afgerond maar afgekapt na 6 getallen. De nauwkeurigheid is echter niet in het geding.
Als je het gestal opslaat in een variabele (setq x1 (atof "1041.8957")) dan geeft de variabele het afgekapte getal als resultaat. Desondanks is het getal niet afgerond en kun je er gewoon mee verder werken.

Misschien helpt het volgende voorbeeld:

(defun c:test ()
(setq x1 (atof "1041.8957"))
(princ "\nx1 = ")
(princ x1)
(princ "\nrtos van x1 = ")
(princ (rtos x1 2 4))
(princ "\nx2 = x1 - 0.001")
(setq x2 (- x1 0.001))
(princ "\nx2 = ")
(princ x2)
(princ "\nrtos van x2 = ")
(princ (rtos x2 2 4)))

Titel: Re: atof rond ongewild af
Bericht door: delangstevandestraat op wo 07 09 2016, 15:05:19
De getallen die niet getoond worden blijven inderdaad achter de schermen in het systeem zitten,
ik het een lijn getekend naar de schijnbaar afgeronde waarden, en in de properties van autocad blijkt dat de lijn wel effectief naar het correcte punt is getekend.

Bij deze bedankt om te helpen zoeken,

item Afgesloten
Titel: Re: atof rond ongewild af OPLOSSING ONMOGELIJK MAAR GEEN PROBLEEM
Bericht door: delangstevandestraat op do 13 10 2016, 11:33:05
Extra info :
ik heb ook ondekt dat DIMZIN ook een invloed heeft op RTOS