Page 1 sur 1
Comment declarer une variable decimale
Publié : sam. 31/janv./2009 9:11
par jbernard13
Bonjour
juste une petite question , je suis entrain de refaire des exemples Vb en PB histoire de faire la main en Pb , et j'arrive a trouver comment faire en Pb ceci
: Dim Tempf as decimal
j'"ai compris en Vb que l'on declare la variable Tempf comme une variable decimale , mais en pb comment la declarer au debut .
merci beaucoup de votre aide
Re: Comment declarer une variable decimale en debut de code
Publié : sam. 31/janv./2009 9:16
par tmyke
jbernard13 a écrit :
: Dim Tempf as decimal
heuuu, un
ferait je pense très bien l'affaire, pour une déclaration globale en tête de code.
En C/C++ par exemple , on aime bien s'appuyer sur la notation hongroise pour toujours
garder en visu le type de déclaration de la donnée, on écrirait donc dans ce cas(mais la je chipote):
Publié : sam. 31/janv./2009 9:19
par jbernard13
merci de ta reponse
c'est plutot Tempf.f
Publié : sam. 31/janv./2009 15:04
par jbernard13
je rencontre un probleme
pour le convertion , j'ai l'impression que ma virgule est ignorer
si je tape 12 je trouve 54 alors que le vrai resultat est 53,6
je sais pas si Pb est à l'aise avec les virgules .
Code : Tout sélectionner
** Conversion de temperature
; ** par jbernard
; Declaration des constantes
;** Fenetre**
Enumeration
#Fenetre_0
EndEnumeration
;**Gadget**
Enumeration
#String
#Bouton_Convertir
EndEnumeration
;**procedure pour convertir en Farenheit
Procedure CalculT()
tempf.f = Val(GetGadgetText(#String))
Total= tempf.f*1.8+32
MessageRequester("Information","La conversion en Farenheit est :"+ Str(Total),#MB_OK)
EndProcedure
;** Creation de la fenetre
If OpenWindow(#Fenetre_0,0,0,290,90,"Convertion de Tempèrature",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
StringGadget(#String,55,20,180,20,"",#PB_String_Numeric)
ButtonGadget(#Bouton_Convertir,95,55,100,20,"Convertir")
EndIf
;** Boucle du programme
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #Bouton_Convertir : CalculT()
EndSelect
Case #PB_Event_CloseWindow
Quitter =#True
EndSelect
Until Quitter
End
Publié : sam. 31/janv./2009 15:20
par tmyke
PB n'y est pour rien, du moins dans ce cas. Le soucis se situe plus ou moins entre
le clavier et le fauteuil.
remplace
Code : Tout sélectionner
Procedure CalculT()
tempf.f = Val(GetGadgetText(#String))
Total= tempf.f*1.8+32
MessageRequester("Information","La conversion en Farenheit est :"+ Str(Total),#MB_OK)
EndProcedure
par
Code : Tout sélectionner
Procedure CalculT()
tempf.f = Val(GetGadgetText(#String))
Total.f = tempf*1.8+32.0
MessageRequester("Information","La conversion en Farenheit est :"+ StrF(Total),#MB_OK)
EndProcedure
cela donnera de meilleurs résultat.
N'oublie pas que l'utilisation implicite des variables est par défaut au format entiers ( 'Total' dans ton cas)
et pour la sortie de ton résultat au format texte, passe par
StrF pour les float
plutôt que par
Str
N'hésite pas à employer
EnableExplicit, cela t'obligera à définir explicitement des données
et donc à établir dès le départ les bon format, ce qui t'éviteras ce genre de désagrément.

Publié : sam. 31/janv./2009 15:36
par jbernard13
merci te reponse , je connais pas Strf , je connais juste valif
Publié : sam. 31/janv./2009 16:12
par Ar-S
Resultat$ = StrF(Valeur.f [, NombreDeDecimales])
Description
Convertit un nombre à virgule (float) en chaîne de caractères. Un nombre maximum de décimales peut être spécifié. Le nombre sera arrondi si 'NombreDeDecimales 'est plus petit que le nombre de décimales existantes de 'Valeur.f '.
Note: Les nombres entiers signés doivent être convertis avec Str() ou StrQ() et les nombres entiers non signés avec StrU().
Exemple:
Debug StrF(15.546) ; Affichera "15.546".
-----
Extrait de la doc JB
P.S : d'ailleus ça affiche : 15.546000
Publié : sam. 31/janv./2009 17:03
par Ollivier
Pour résumer parfaitement :
Code : Tout sélectionner
EntierLong.L = Val(EntierChaine.S)
EntierChaine.S = Str(EntierLong.L)
DecimalFlottant.F = ValF(DecimalChaine.S)
DecimalChaine.S = StrF(DecimalFlottant.F)
Publié : sam. 31/janv./2009 17:29
par Oliv
tmyke a écrit :PB n'y est pour rien, du moins dans ce cas. Le soucis se situe plus ou moins entre
le clavier et le fauteuil.

Sans blagues ???
J'adore
Publié : sam. 31/janv./2009 17:34
par Anonyme
Inscrit le: 08 Juin 2008
Inscrit le: 05 Jan 2005
Inscrit le: 18 Avr 2004
...
...
...
2009 - 2004 = 5
Gros problème d'interface chaise/clavier effectivement.
Publié : sam. 31/janv./2009 18:56
par jbernard13
alors cpl.bator j'attends toujours la suite de ton livre .