Page 2 sur 2

Re: formatage de sortie pour les nombre (separateur milliers

Publié : sam. 07/janv./2012 14:33
par Guimauve
Bonjour à tous,

Une version créé par Gnozal en 2008, J'ai ajouté le formatage des variables flottantes (Float et Double)

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : FormatInteger()
; Nom du Fichier : FormatInteger.pbi
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Gnozal
; Date : 17-10-2008
; Mise à jour : 07-10-2011
; Codé avec PureBasic V4.60
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure.s FormatInteger(Number.s)
  
  NumberLen = Len(Number)
  Start = NumberLen % 3
  FormatedNumber.s = Left(Number, Start)
  
  For i = Start + 1 To NumberLen - Start Step 3
    FormatedNumber + " " + Mid(Number, i, 3)
  Next
  
  ProcedureReturn LTrim(FormatedNumber)
EndProcedure

Macro FormatDouble(Number)
  
  FormatInteger(StringField(Number, 1, ".")) + "." + StringField(Number, 2, ".")
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< CODE D'ESSAI <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<

Debug FormatInteger("1000")
Debug FormatInteger("10000")
Debug FormatInteger("100000")

Debug FormatDouble("1000.25")
Debug FormatDouble("10000.32")
Debug FormatDouble("100000.14")

; Debug FormatInteger("1000000")
; Debug FormatInteger("10000000")
; Debug FormatInteger("100000000")
; Debug FormatInteger("1000000000")
; Debug FormatInteger("10000000000")
; Debug FormatInteger("100000000000")
; Debug FormatInteger("1000000000000")
; Debug FormatInteger("10000000000000")
; Debug FormatInteger("100000000000000")

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
A+
Guimauve

Re: formatage de sortie pour les nombre (separateur milliers

Publié : sam. 07/janv./2012 21:35
par SPH
Guimauve : ton code est tres puissant aussi :P

Re: formatage de sortie pour les nombre (separateur milliers

Publié : mar. 10/janv./2012 13:19
par brossden
Bonjour à tous

Je voudrais vous proposer un petit "PrintUsing" qui je pense peut afficher n'importe quel format.

Code : Tout sélectionner

Procedure.s PrintUsing(Chaine.s, Format.s)
  If Left(Chaine,1)="-" 
    Sign.s = "-"
    Chaine = Mid(Trim(Chaine),2)
  Else
    Sign.s=""
  EndIf
  PosVirgCh = FindString(Trim(Chaine),".",1)
  
  If PosVirgCh = 0 : PosVirgCh = Len(Trim(Chaine))+1 : EndIf
  PosvirgFo = FindString(Format,".",1)
  If PosvirgFo = 0 : PosvirgFo = Len(Trim(Format))+1 : EndIf
  NbrCarFo = CountString(Mid(Format,1,PosvirgFo),"#")
  NbrDecFo = CountString(Mid(Format,PosvirgFo),"#")
  NbrCarCh = PosVirgCh-1
  PosSep =1
  While Mid(Format,PosSep,1)="#"
    PosSep+1
  Wend
  Sep.s=Mid(Format,PosSep,1)
  NbrCarNFo = NbrCarFo
  DerCarFo.s= Mid(Trim(Format),1,PosSep)
  NFormat.s = Mid(Trim(Format),1,PosvirgFo-1)
  While NbrCarNFo < NbrCarCh
    NFormat.s = DerCarFo + NFormat
    NbrCarNFo + PosSep -1
  Wend
  Nchaine.s = Mid(Trim(Chaine),1,PosVirgCh-1)
  Ret.s = LSet(Mid(Trim(Chaine),PosVirgCh+1),NbrDecFo,"0")
  If NbrDecFo > 0
    Ret = "."+Ret
  EndIf
  CarCh =1
  For CarFo = 1 To Len(NFormat)
    Car.s = Left(Right(NFormat,CarFo),1)
    If Car ="#"
      Ret = Left(Right(Nchaine,CarCh),1)+Ret
      CarCh+1
    Else
      Ret = Car + Ret
    EndIf
    If CarCh > Len(Nchaine)
      CarFo = Len(NFormat)
    EndIf
  Next
  ProcedureReturn  Sign + Ret
EndProcedure

; Test
MessageRequester("Résultat",PrintUsing("-123.00","### ###"))
MessageRequester("Résultat",PrintUsing("-123","### ###.##"))
MessageRequester("Résultat",PrintUsing("-123.456","### ###.##"))
MessageRequester("Résultat",PrintUsing("1234567890.5","###,###.##"))
MessageRequester("Résultat",PrintUsing("12345678905258","##/## ##:##"))


Re: formatage de sortie pour les nombre (separateur milliers

Publié : mer. 11/janv./2012 8:08
par brossden
Je me rend compte que le code est un peu incompréhensible, si cela intéresse quelqu'un je peux annoter le code pour éclaircir algorithme.

Re: formatage de sortie pour les nombre (separateur milliers

Publié : mer. 11/janv./2012 14:41
par graph100
et personne n'a pensé à faire affichage scientifique par hasard ?
du genre :
145.8964 --> 145.8964
115450000 --> 11545e4
115450001 --> 11 545 001
0.0001548 --> 1.548e-4
et surtout pour les floats/double :
0.000000000000000000000000008895 --> 8.895e-27

Re: formatage de sortie pour les nombre (separateur milliers

Publié : jeu. 12/janv./2012 6:18
par brossden
Graph100

Regarde le titre du sujet il ne correspond pas à ta demande !

Sauf erreur de ma part l'affichage scientifique de correspond pas à tes exemples !

Quelque soit la valeur à afficher elle est représentée par un seul chiffre au dessus de la virgule, puis les décimales et enfin E suivit de l'exposant de 10
soit
0.15 > 1,5 E -1
1.5 >1.5 E 0
15 > 1.5 E 1
150 > 1.5 E 2

etc.....

Voir ici :
http://fr.wikipedia.org/wiki/Notation_scientifique

Re: formatage de sortie pour les nombre (separateur milliers

Publié : jeu. 12/janv./2012 20:23
par graph100
ouep ;)
je parle d'un affichage scientifique à notre sauce. et comme cela est lié au sujet car c'est un formatage pour les nombres, j'm'suis dis que pit'être je pourrais en parler ici :)

je suis en train de faire un gadget pour tracer des graphiques, et j'ai débusqué un lapin : l'affichage des nombres sur les axes, problématique lorsqu'ils sont trop long, ou bien grand mais avec une faible variation, ou très petit.

voila voila