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
avec

Code : Tout sélectionner

StrF(Value,2)

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:

Code : Tout sélectionner

Define X.f=5.90005

AddGadgetItem(#Gadget, -1, StrF(X, 2))
(-1 ajoute les lignes les unes à la suite des autres)

http://www.purebasic.com/french/documen ... titem.html

:wink:

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