JeuWeb - Crée ton jeu par navigateur
Microtime() résultat négatif... - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Microtime() résultat négatif... (/showthread.php?tid=4265)

Pages : 1 2


RE: Microtime() résultat négatif... - Argorate - 08-08-2009

Sans Argument, phrase non ressevable, désolé Smile

Et partir utiliser une autre méthode parcequ'on ne comprend pas un phénomène sur une fonction, c'est pas la solution je pense.


RE: Microtime() résultat négatif... - Thedeejay - 08-08-2009

je sais :p

c'etait dans une liste des 1000 trucs a ne pas faire en php (et un des rares que j'ai respecté...)


RE: Microtime() résultat négatif... - wild-D - 08-08-2009

mdr, la variable server te fourni le début de script; donc inutile si tu veux chronométrer la durée d'execution d'un bout de ton code.

peut-être ça (#48187: DateTime::diff() corrupting microtime() result)^^
vu qu'on a pas le code Tongue

enfin moi il m'est arrivé aussi à l'occasion d'avoir un résultat incohérent avec microtime(TRUE). (j'utilise plutot la bonne vielle version, qui elle me pose pas de pb... les mystères du binaire Big Grin )


RE: Microtime() résultat négatif... - NicoMSEvent - 09-08-2009

il faut savoir qu'un "float" n'est qu'une approximation d'un nombre (le "double" est une approximation codée sur le double de mémoire, d'ou son nom ^^). Se pourrait-il que deux grands nombres stockés dans des "float" soient tronqués, ou faussés au point d'avoir le problème décrit ci-dessus? Smile


RE: Microtime() résultat négatif... - wild-D - 09-08-2009

le binaire c'est en base 2, pas en base 10, donc y a de subtile différence (les résultat "rond" en base 10 ou en base 2 sont pas les mêmes surtout en float )
y a bien eu à une époque (enfin je sais pas si c'est encore d'actualité) ou on pouvait faire des truc genre (les valeurs sont fantaisiste c'est pour le principe)
floor((7.5+2.5/2)) --> 4 Big Grin
alors que pas de problème
floor((7.4+2.6)/2) --> 5

^^ si on utilise des nombre assez grand on arrive bien à faire dire que 1 = 0 Big Grin
mais bon vu que les timestamp unix sont pas non plus des valeur trop monstrueuse, ça me parait un peu extrême que ce soit ça. (que ait des imprécision ok, mais de là à basculer de signe, ça fait bcp non ? surtout que le temps de son script qu'il utilise doit quand même pas chiffrer en année; justement le temps serait ultra faible, là ok, on pourrait imaginer tomber dans les imprecisions de troncage; mais là arogate semble dire que ça venait justement quand le script durait)


RE: Microtime() résultat négatif... - NicoMSEvent - 09-08-2009

si tu compte le nombre de microseconde depuis 1970, tu as des nombres assez grand quand même ^^
Si tu soustraits deux nombres de cet ordre la, je ne sais pas trop ce que ça doit donner (perso, j'utilise microtime_float() et je n'ai pas eu de problème dans mes scripts :p)


RE: Microtime() résultat négatif... - Argorate - 09-08-2009

Si je retombe dans un cas où j'ai un resultat negatif, je vous donnerais les infos....

En attendant, ce n'est pas "vital".