[VB] Problème de typage

Problème de typage [VB] - C#/.NET managed - Programmation

Marsh Posté le 11-10-2002 à 14:25:36    


J'ai un truc assez étrange avec un typage de variable. Bon c'est une question assez bête, mais je ne suis pas un spécialiste du VB. Voilà, je récupère des données à partir d'un active X, dont une heure exprimée en secondes. pour la convertir en heure au sens Access ou Excel, je dois diviser par 3600 et par 24.
 
Dans la formule
 
tempVariant = lngNbSecondes / (3600 * 24)
 
je vois un dépassement de capacité avec le debugger mais pas de message d'erreur par le VB.
 
Quelle est l'astuce ?

Reply

Marsh Posté le 11-10-2002 à 14:25:36   

Reply

Marsh Posté le 11-10-2002 à 14:40:26    

à vue de nez, 3600 * 24 > 65000 donc c'est cette partie qui pète :)
 
Essaie avec ((tmptrucmuche / 3600) / 24)
 
Sinon :
 
(tmptrucmuche / (clng(3600) * clng(24)))
 
Ca doit marcher aussi :)
 
Ou alors :
 
tmptrucmuche / 86400 :D

Reply

Marsh Posté le 11-10-2002 à 15:18:48    

MagicBuzz a écrit a écrit :

à vue de nez, 3600 * 24 > 65000 donc c'est cette partie qui pète :)
 
Essaie avec ((tmptrucmuche / 3600) / 24)
 
Sinon :
 
(tmptrucmuche / (clng(3600) * clng(24)))
 
Ca doit marcher aussi :)
 
Ou alors :
 
tmptrucmuche / 86400 :D




 
et bien en fait, je fais blabla / 86400 :D
mais c'est quand même étrange d'avoir un dépassement de capacité à cet endroit... le '/' n'accpete quand même pas que des double ?????

Reply

Marsh Posté le 11-10-2002 à 15:54:07    

Nan, c zarb en effet :)
 
Essaie de faire un clng sur les deux opérateurs :??:

Reply

Marsh Posté le 11-10-2002 à 16:11:37    

En QB, c'est pareil...
Si rien précisé, souvent il fait calcul en entier => explosion.
Et avec / (3600.0 * 24) ? .0 veut dire single (float en C).
 
 
Ai eu pb inverse l'autre jour : k% = 1 + n% / 25. n% = 13, k% = 2 because il calcule en single !! Pour embêter :o. Il fait (25 + n%)/25. J'ai dû rajouter int(n/25).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed