Page 1 sur 1
ElapsedMilliseconds() retourne valeur negatif
Publié : mer. 21/sept./2005 17:40
par Thyphoon
Bonjour je viens de decouvrir que ElapsedMilliseconds() retournait une valeur negatif lorsqu'un ordinateur restait allumé trop longtemps (plusieurs semaines)
Est ce normal ?
Merci
Publié : mer. 21/sept./2005 18:00
par Backup
oui !
car les nombres trop grands font activer le bit de signe !(en binaire

)
du coup ça passe en negatif !
j'ai pas dit qu'ils faisaient signe avec leur bit (e)
Publié : mer. 21/sept./2005 18:05
par Dr. Dri
Dobro a écrit :j'ai pas dit qu'ils faisaient signe avec leur bit (e)
plus personne sur ce forum n'a encore l'âge de la faire celle là
@Typhoon
Pour ca tu ne peux pas faire grand chose... il faudrait passer par des entiers longs non signés (toujours positifs) mais pour ca on n'a pas d'info... peut etre la version 4
*joint tes mains et prie comme beaucoup ici bas

*
en attendant tu peux émuler des entiers non signés en passant par des nombres réels... si le nombre est négatif, il faut ajouter un décallage mais j'ai la flemme de chercher la valeur...
regarde peut etre du côté de #MinLong et #MaxLong
Dri

Publié : mer. 21/sept./2005 18:08
par LeCyb
Selon mon calcul après 24 jours 20 heures 31 min 23 sec et 647 ms la fonction donne un nombre négatif car un entier signé va de zéro à 2147483647 en positif et ensuite si tu ajouttes 1 il va en négatif (-2147483648).
Je rajoutterais que tu es de toute façon limité à 4294967295 ms avec un entier non-signé sur 32bits, ce qui fait 49 jours 17 heures 2 min 47 sec 296 ms.
Après quoi la milliseconde d'après tu reviendrais à zéro.
Publié : mer. 21/sept./2005 18:09
par Thyphoon
Merci pour tout !! En tout cas je suis contant je suis pas fou lollllllll
Publié : mer. 21/sept./2005 18:19
par LeCyb
Sur le msdn:
http://msdn.microsoft.com/library/defau ... kcount.asp
"The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days."
Mais tu peux tenter d'utiliser la fonction QueryPerformanceCounter de l'API Win32 qui te donnera un pointeur vers un entier sur 8 bytes (64bits quoi).
Publié : mer. 21/sept./2005 18:24
par Thyphoon
Merci beaucoup pour toute ces precisons je vais aller voir ça
Publié : mer. 21/sept./2005 18:30
par LeCyb
Donc sur 64bits tu aurais un entier non-signé de 0 à 18446744073709551615.
Ce qui ferait un maximum de 58494 millénaires 2 siècles 417 années 129 jours
14 heures 25 min 51 sec 615 ms, et si tu arrives à faire tourner Windows autant de temps je te paye un pot au paradis lol.
Si ça convient pas on pourra toujours fait une suggestion à Fred pour des nombres sur 128 bits

Publié : mer. 21/sept./2005 18:50
par Thyphoon
LeCyb a écrit :Donc sur 64bits tu aurais un entier non-signé de 0 à 18446744073709551615.
Ce qui ferait un maximum de 58494 millénaires 2 siècles 417 années 129 jours
14 heures 25 min 51 sec 615 ms, et si tu arrives à faire tourner Windows autant de temps je te paye un pot au paradis lol.
Si ça convient pas on pourra toujours fait une suggestion à Fred pour des nombres sur 128 bits

vas savoir j'ai un pc 80/86 qui doit tourner depuis plus 20 ans 24 sur 24 sans aucun plantage et j'ai eu un A2000 qui a tourné 15 ans 24/24 sans aucune panne...et il marche toujous ! Parcontre mon pc acheté il y a 1 ans a déjà eu 2 pannes...

Publié : mer. 21/sept./2005 21:31
par djes
Puis-je te demander ce que tu fais avec ces machines?
Publié : mer. 21/sept./2005 21:35
par nico
Il teste son PC parce qu'il a l'impression qu'il est complètement allumé!

Publié : mer. 21/sept./2005 21:42
par Backup
il sait pas comment on les arretes !
voila la raison , c'etait tout simple pourtant !
pour sa tele , sa voiture , c'est pareil !

Publié : jeu. 22/sept./2005 3:53
par Thyphoon
djes a écrit :Puis-je te demander ce que tu fais avec ces machines?

Et bien ils servent pour la gestion du chauffage de la maison. il y a un petit programme qui tourne en tache de fond et qui s'occupe de choisir quel source d'energie est la plus interessante panneau solaire, pompe a chaleur aire-eau, pompe a chaleur eau-eau... pour chauffer un balon solaire. Et puis ça analyse les sondes de temperature dans la maison et s'adapte en fonction de la temperature. Bref de la domotique et de la repartition d'energie
