Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Ca fait plusieurs années que je cherche (enfin pas tout le temps hein ;-) le moyen d'afficher les zéros après la virgule après un rtos.

 

rtos arrondi la valeur à la décimale déterminée par la variable LUPREC. donc, pour un LUPREC à 2, (rtos 1.1467) -> "1.15" ok, (rtos 1.1) -> "1.1" ok aussi, mais moi je veux "1.10"

 

J'ai pas trouvé de variable qui gère ça. Il est toujours possible de faire un lisp qui ajoute des zéro à la fin de la chaine mais c'est un peu alambiqué. Quelqu'un a-il une solution séduisante ?

 

Meric d'avance

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Posté(e)

Bonjour,

 

Aussi bizarre que cela puisse paraître, la variable de cotation DIMZIN influe sur l'affichage du retour de la fonction lisp (rtos)

 

Si (rtos 1.1 2 2) te renvoie "1.1", c'est que DIMZIN est à 8 ou plus, mets une autre valeur inférieure et le retour sera différent!

 

NB: Cela est évoqué dans l'aide sur DIMZIN

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour,

 

Attention toutefois à la variable DIMZIN.

Le bit 4 supprime les zéros en la fin du nombre.

Le bit 8 supprime le zéro avant la virgule.

 

Avec dimzin à 12 :

$ (rtos 0.1 2 2)
".1"

 

Olivier

PS : grillé par Bonuscad :D

  • 1 an après...
Posté(e)

Bonjour

 

J'ai aussi cherché... pas trouvé, alors je me suis dépanné avec ce petit lisp:

 

;Argunents

;txt nombre en format texte

;n nombre de chiffres après le point

(defun AjoutZero (txt n / posdeci nouvtxt)

(setq nouvtxt ""

posdeci (if (/= nil (vl-string-search "." txt)) (+ (vl-string-search "." txt) 2))

)

(if (null posdeci) (setq nouvtxt (strcat txt ".00"))

(progn

(setq n (1- (+ posdeci n)) elm 1)

(repeat n

(setq nouvtxt (if (= (substr txt elm 1) "") (setq nouvtxt (strcat nouvtxt "0")) (strcat nouvtxt (substr txt elm 1)))

n (1- n) elm (1+ elm)

)

)

)

)

nouvtxt

)

Posté(e)

Bonjour,

 

J'ai aussi cherché... pas trouvé, alors je me suis dépanné avec ce petit lisp:

 

C'est possible également avec rtos, comme précisé dans les messages précédents il suffit de faire attention à la valeur de DIMZIN..

 

Rapidement pour le principe une variante de ton lisp qui devrait fonctionner, (acceptant un nombre au format chaîne de caractère ou numérique):

 

(defun AjoutZero (nbr n)
 (if (numberp (setq nbr (distof (vl-princ-to-string nbr) )))
   ((lambda (v) (setvar 'dimzin 0) (setq nbr (rtos nbr 2 n)) (setvar 'dimzin v) nbr) (getvar 'dimzin))
 )
)

 

_$ (AjoutZero "5.130" 6)
"5.130000"
_$ (AjoutZero 5.13 6)
"5.130000"
_$ (AjoutZero "toto" 6)
nil
_$

 

A+

Apprendre => Prendre => Rendre

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité