neo1602brice
Messages postés77Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention10 juillet 2009
-
4 avril 2007 à 01:55
neo1602brice
Messages postés77Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention10 juillet 2009
-
4 avril 2007 à 02:14
Salut à tous,
J'essaye d'effectuer le calcul suivant
tempsA = CInt(heureA) * 3600
à savoir,
tempsA as double
heureA as string
Dans mon problème heureA=100
J'obtiens l'erreur suivant "Dépassement de capacité", je ne comprends pas, vu que j'ai déclaré tempsA en double
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 avril 2007 à 02:09
Salut
Tu veux mettre dans un Double le résultat d'une multiplication entre une String et un Integer (on n'est plus le 1er avril pourtant).
Va falloir faire un choix entre les choux et les carottes !
Dépassement de capacité : Oui car :
- La conversion d'un Integer en String est implicite, pas propre, mais ce n'est pas ça qui cause l'erreur.
- HeureA est un Double : Tu le convertis en Integer et tu en prends la valeur entière, Ok, logique.
- Par contre, HeureA pouvant afficher des valeurs jusqu'à 23, une fois multiplié par 3600, tu dépasses alègrement les 32767, seules valeurs autorisées en positif dans ce genre de variable.
Il faut donc converstir le tout en Double :
tempsA = CDbl(Fix(Val(heureA)) * 3600)
où :
Val : permet de s'affranchir des valeurs non numériques
Fix : Isole la partie entière d'un nombre (au lieu de CInt)
CDbl : Pour ramener le résultat au bon format final
Il faut être très précis sur les types de variable, sinon, gare aux surprises !
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)