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

Code : Tout sélectionner

Global Tempf.l
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):

Code : Tout sélectionner

Global lTempf.l

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 .