Page 1 sur 1
[Résolu] Calibrer les nombres flottants dans un listicon ?
Publié : mer. 25/mai/2016 15:31
par Micoute
Bonjour à tous,
j'aimerais pouvoir justifier le nombre de décimales d'un nombre de type Float dans un ListIconGadget(), par exemple, j'ai un nombre d'une valeur de 5.9, ça me sort 5.90005 et j'aimerais couper à 5.90.
Je vous remercie grandement de l'aide que vous allez m'apporter.
Re: Comment calibrer les nombres flottants dans un listicon
Publié : mer. 25/mai/2016 16:08
par microdevweb
Re: Comment calibrer les nombres flottants dans un listicon
Publié : mer. 25/mai/2016 17:04
par Micoute
Merci microdevweb, c'est ce que j'ai fait, mais ça ne fonctionne pas !
Re: Comment calibrer les nombres flottants dans un listicon
Publié : mer. 25/mai/2016 22:40
par microdevweb
Ha étonnant maintenant attention que si la variable de base est un double on doit utiliser StrD(Value,2), à noter aussi que si je ne me trompe pas double est plus précis que float.
Code : Tout sélectionner
Define X.f=5.90005
Debug StrF(X,2)
Define Y.d=5.90005
Debug StrD(Y,2)
Re: Comment calibrer les nombres flottants dans un listicon
Publié : jeu. 26/mai/2016 6:44
par Micoute
bonjour micrdevweb, ton raisonnement est très bon, mais n'explique pas comment on met un StrF(nombreFloat) dans un ListiconGadget().
Merci de t'être impliqué pour moi.
Re: Comment calibrer les nombres flottants dans un listicon
Publié : jeu. 26/mai/2016 7:40
par Marc56
Bonjour Micoute,
Les lignes d'un
ListiconGadget() sont toujours des chaines de caractères
StrF() ou
StrD() retournent une chaine.
Donc directement:
(-1 ajoute les lignes les unes à la suite des autres)
http://www.purebasic.com/french/documen ... titem.html

Re: Comment calibrer les nombres flottants dans un listicon
Publié : jeu. 26/mai/2016 9:11
par Micoute
Je suis désolé pour tous les 2, mais je pensais que ça ne marcherait pas avec des structures et il faut se méfier des préjugés.
Merci à tous les 2.
Re: Comment calibrer les nombres flottants dans un listicon
Publié : jeu. 26/mai/2016 9:15
par microdevweb
Voici une exemple simple
Edit: J'avais posté avant ta réponse, c'est exactement la même chose avec une structure
Code : Tout sélectionner
#MainForm=0
#lstA=0
#lstB=1
; Teste avec quelques float
Global Dim Value.f(3)
Value(0)=38.5974
Value(1)=34.0174
Value(2)=99.9974
Value(3)=88.9374
Procedure Exit()
End
EndProcedure
Procedure OpenMainForm()
Protected flag=#PB_Window_SystemMenu|#PB_Window_ScreenCentered
Protected WF=800,HF=600,Margin=10,X=Margin,Y=Margin
Protected WG=WF-(Margin*2)
Protected LabelHeight=30
Protected LstHeight=(HF/2)-(LabelHeight+(Margin*2))
Protected N
OpenWindow(#MainForm,0,0,WF,HF,"Teste",flag)
; Mise en place des listes
TextGadget(#PB_Any,X,Y,WG,LabelHeight,"Liste sans arrondi")
Y+LabelHeight
ListViewGadget(#lstA,X,Y,WG,LstHeight)
Y+LstHeight+Margin
TextGadget(#PB_Any,X,Y,WG,LabelHeight,"Liste avec arrondi")
Y+LabelHeight
ListViewGadget(#lstB,X,Y,WG,LstHeight)
; Remplisage des listes
For N=0 To ArraySize(Value())
; La liste sans arrondi
AddGadgetItem(#lstA,-1,StrF(Value(N)))
; La liste avec arrondi
AddGadgetItem(#lstB,-1,StrF(Value(N),2))
Next
; Calback pour la sortie
BindEvent(#PB_Event_CloseWindow,@Exit(),#MainForm)
EndProcedure
OpenMainForm()
; Main loop
Repeat:WaitWindowEvent():ForEver
Re: Comment calibrer les nombres flottants dans un listicon
Publié : jeu. 26/mai/2016 9:21
par microdevweb
Voici donc le même exemple avec une liste structurée
Code : Tout sélectionner
#MainForm=0
#lstA=0
#lstB=1
; Teste avec quelques float
Structure Value
Value.f
EndStructure
Global NewList myValue.Value()
With myValue()
AddElement(myValue())
\Value=38.5974
AddElement(myValue())
\Value=34.0174
AddElement(myValue())
\Value=99.9974
AddElement(myValue())
\Value=88.9374
EndWith
Procedure Exit()
End
EndProcedure
Procedure OpenMainForm()
Protected flag=#PB_Window_SystemMenu|#PB_Window_ScreenCentered
Protected WF=800,HF=600,Margin=10,X=Margin,Y=Margin
Protected WG=WF-(Margin*2)
Protected LabelHeight=30
Protected LstHeight=(HF/2)-(LabelHeight+(Margin*2))
OpenWindow(#MainForm,0,0,WF,HF,"Teste",flag)
; Mise en place des listes
TextGadget(#PB_Any,X,Y,WG,LabelHeight,"Liste sans arrondi")
Y+LabelHeight
ListViewGadget(#lstA,X,Y,WG,LstHeight)
Y+LstHeight+Margin
TextGadget(#PB_Any,X,Y,WG,LabelHeight,"Liste avec arrondi")
Y+LabelHeight
ListViewGadget(#lstB,X,Y,WG,LstHeight)
; Remplisage des listes
With myValue()
ForEach myValue()
; La liste sans arrondi
AddGadgetItem(#lstA,-1,StrF(\Value))
; La liste avec arrondi
AddGadgetItem(#lstB,-1,StrF(\Value,2))
Next
EndWith
; Calback pour la sortie
BindEvent(#PB_Event_CloseWindow,@Exit(),#MainForm)
EndProcedure
OpenMainForm()
; Main loop
Repeat:WaitWindowEvent():ForEver