Aller au contenu

[Résolu] Transformation de chaines en réels et inversement


Messages recommandés

Posté(e)

Bonjours à tous,

 

Voilà, j'ai un petit souci. J'ai deux chaines et il faut que j'en soustrais une à l'autre (Zgs=Zgs-prf).

 

Pour celà, je dois convertir ces deux chaines en réels puis, convertir à nouveau le résultat en chaine.

 

J'ai ceci :

  ;prf = "0.95"
 ;Zgs = "63.83"
 (setq Zgs (itoa (- (atoi Zgs) (atoi prf))))

 

Mais je suis paumé dans les "ITOA", "ATOI" et "RTOS" malgré la lecture de l'excellente "Introduction _a_AutoLISP.pdf" de (gile)...

 

En effet, le résultat de Zgs me donne "63" et je n'ai plus de décimales...

 

Et je n'ai pas de liens avec l'aide aux développeurs depuis Visual LISP.

 

Si quelqu'un a une idée...

 

Merci d'avance...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut,

 

atoi transforme une chaine en entier, donc "63.83" devient 63.

Il faut utiliser atof à la place pour conserver les décimales.

 

Et itoa convertit un entier en chaine.

Comme nous voulons un nombre à virgule, il faut utiliser rtos et lui dire combien nous voulons de chiffres après la virgule.

 

(setq Zgs (rtos (- (atof Zgs) (atof prf)) 2 2))

  • Upvote 1

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Bonjour Bruno,

 

Merci, je n'avais pas vu "ATOF"... Ca fonctionne nikel.

 

Juste une petite question : j'avais mis un "princ" après ma formule pour vérifier la valeur de Zgs.

(princ (srtcat "\nZgs=" Zgs))

Mais je ne comprend pas pourquoi elle plante...

 

En tous cas, merci encore, c'est impécable...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Re,

 

Mais je ne comprend pas pourquoi elle plante...

strcat tes doigts ont dérapé sur le clavier en programmation cela ne pardonne pas...

Tu n'utilises pas l'IDE Visual Lisp d'AutoCAD?

 

A+

Apprendre => Prendre => Rendre

Posté(e)

Salut,

 

Ça ne marche pas parce que strcat attend des chaînes de caractères comme argument et la variable Zgs est liée à un nombre réel.

 

Il faut convertir Zgs en chaîne avec rtos :

(princ (srtcat "\nZgs=" (rtos Zgs)))

 

ou passer directement Zgs à princ qui accepte tous les types d'expression LISP:

(princ "\nZgs=")
(princ Zgs))

  • Upvote 1

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci Bruno...

 

Effectivement... J'ai rippé...

 

J'utilise pourtant l'IDE mais je n'avais pas remarqué la couleur...

 

C'est pourtant simple... Je me donnerais des baffes parfois...

 

Merci encore...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

C'est pourtant simple... Je me donnerais des baffes parfois...

Si cela peut te rassurer en privé je m'en donne régulièrement, pas plus tard que ce matin avec la fonction ssget, alors que je pensais tous comprendre des sélections sous d'AutoCAD, je m'aperçois avec émerveillement que j'en découvre toujours plus…

Apprendre => Prendre => Rendre

Posté(e)
Mais je suis paumé dans les "ITOA", "ATOI" et "RTOS"

 

En comprenant l'anglais cela fais appel à une mnémmonique:

 

ItoA = Integer TO Alphanumeric

AtoI = Alphanumeric TO Integer

RtoS = Real TO String

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

Posté(e)

En comprenant l'anglais cela fais appel à une mnémmonique:

 

ItoA = Integer TO Alphanumeric

AtoI = Alphanumeric TO Integer

RtoS = Real TO String

Pour compléter

AtoF = = Alphanumeric TO Float

 

Hé oui, cela aurait pu être StoR pour AtoF, ou FtoA pour RtoS mais non faut faire avec...

Apprendre => Prendre => Rendre

Posté(e)

Effectivement, vu de cette manière, ça parait plus simple.

 

Merci pour la mnémotechnie, j'essairais de m'en souvenir...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é