[Résolu] Calibrer les nombres flottants dans un listicon ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Calibrer les nombres flottants dans un listicon ?

Message 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.
Dernière modification par Micoute le jeu. 26/mai/2016 11:54, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment calibrer les nombres flottants dans un listicon

Message par microdevweb »

avec

Code : Tout sélectionner

StrF(Value,2)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment calibrer les nombres flottants dans un listicon

Message par Micoute »

Merci microdevweb, c'est ce que j'ai fait, mais ça ne fonctionne pas !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment calibrer les nombres flottants dans un listicon

Message 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)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment calibrer les nombres flottants dans un listicon

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment calibrer les nombres flottants dans un listicon

Message 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:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment calibrer les nombres flottants dans un listicon

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment calibrer les nombres flottants dans un listicon

Message 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

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment calibrer les nombres flottants dans un listicon

Message 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

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre