[R] Format nombre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

[R] Format nombre

#1

Message par walkson »

Bonsoir,
J'essaye en vain de formater 69.78 en 069.780 (3 chiffres avant, 3 chiffres après la virgule)
J'ai tenté de concilier par stringformat() mais sans résultat

Code : Tout sélectionner

MsgBox(0,"",StringFormat("%03i", 69.78))
MsgBox(0,"",StringFormat("%.3f",69.78))

pas de réussite non plus avec StringRegExpReplace()
Ce que je souhaite, c'est une solution polyvalente qui affiche au minima X chiffres avant et au maxima X chiffres après la virgule quel que soit le nombre. Merci de votre aide (et bonne année :wink: )
Modifié en dernier par walkson le ven. 09 janv. 2015 19:20, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Format nombre

#2

Message par orax »

Avec StringFormat j'ai pu le faire comme ça. Mais il y a probablement une façon plus correcte de faire car là il faut mettre le nombre total de caractères (7).

Code : Tout sélectionner

$s = StringFormat("%07.3f", 69.78)
ConsoleWrite($s & @CRLF)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Format nombre

#3

Message par mikell »

Code : Tout sélectionner

;$n = 69.78
;$n = .0679
;$n = 5
$n = 1234.5698

$i = 3   ; avant virgule
$d = 3   ; après virgule
$res = Execute(StringRegExpReplace(StringFormat("%." & $d & "f", $n), _ 
        '(\d*)(\.\d*)', "StringFormat('%0' & $i & 'i' , '$1') & '$2' & ") & "''")
Msgbox(0,"", $res)
Pas taper :mrgreen:
Mais le code d'orax suffit largement ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Format nombre

#4

Message par jguinch »

En moins compliqué, mais pas plus simple : :D

Code : Tout sélectionner

$number = 69.78
$i = 8   ; avant virgule
$d = 4   ; après virgule

$right = StringReplace( StringFormat("%." & $d & "f", $number)  , String(Int($number)), StringFormat( "%0" & $i & "d", Int($number)  ), 1)

ConsoleWrite($right & @CRLF)
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Format nombre

#5

Message par walkson »

Bonjour,
Alors là ! bravo. Une question, trois solutions.
Si la réponse d' Orax est limpide, celle de jguinch j'arrive à la détailler, mais celle de Mikell me reste totalement obscure. S'il pouvait l'expliquer ce serait the must !
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Format nombre

#6

Message par jguinch »

Je laisserai Mikell expliquer son choix :mrgreen:

Pour y voir plus clair, je t'ai décomposé son code :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Format nombre

#7

Message par walkson »

Merci pour l'explication mais il reste un point étrange à la fin du script de Mikell ....& ") & "''") Je n'en vois pas l'utilité ?
Modifié en dernier par walkson le ven. 09 janv. 2015 19:12, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] Format nombre

#8

Message par Y01 »

J'ai essayé de comprendre au mieux le code original de mikell, ça donne ça :

Code : Tout sélectionner

(StringRegExpReplace(test,pattern,replace) & "''")
En effet, je ne comprends pas non plus la fin avec le & "''"
Y01
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Format nombre

#9

Message par walkson »

Je passe le sujet en résolu et merci à Orax, jguinch et Mikell
si Mikell passe par ici, peut il m expliquer la fin du script ? Il fonctionne très bien sans mais ça m'intrigue...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Format nombre

#10

Message par jguinch »

Je pense que la fin du script est un résidu de ce que notre ami Mikell avait fait au début, et il a du oublier de l'enlever....
:mrgreen:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Format nombre

#11

Message par mikell »

En effet... les quotes dans les execute(regex) peuvent être posées de plusieurs façons (c'est mon cauchemar personnel) et un combat acharné avec ces foutus guillemets peut éventuellement laisser des séquelles
Désolé :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Format nombre

#12

Message par jguinch »

Un peu tard, mais tant pis :roll:
http://www.autoitscript.com/forum/topic ... ?p=1217544

C'était pourtant si simple .... Je sais pas pourquoi on avait cherché compliqué :?:

Code : Tout sélectionner

$number = 69.78
$i = 8   ; avant virgule
$d = 4   ; après virgule

$aNumber = StringSplit($number, ".", 2)
ConsoleWrite(StringFormat("%0" & $i & "i.%0" & $d & "i", $aNumber[0], $aNumber[1]) )
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Format nombre

#13

Message par mikell »

Peut-être parce que le résultat souhaité était "00000069.7800" et pas "00000069.0078" ?
:mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Format nombre

#14

Message par jguinch »

:oops:
Oups, chui allé un peu vite...
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre