PHP... Soustraction étrange !
10 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- Grantome
- WRInaute accro

- Messages: 2899
- Inscription: 16 Jan 2004
PHP... Soustraction étrange !
Salut,
Voici exacement ce que je fais... Y a pas plus simple. (Je crois)
J'ai un tableau de temps avec ce type de valeur 1'20''235, par exemple.
Je souhaite touver l'écart entre 2 temps, par exemple 1'20''235 et 1'22''871
Fonction explode pour avoir "1", "20" et "235" pour le premier et "1", "22" et "871" pour le second.
Je multiplie par 60 le premier chiffre (minutes, ramenées en seconde)
Je laisse tel quel le second chiffre
Je /1000 le troisième (pour avoir les millième en seconde)
Résultat, j'ai $a = 80.235 et $b = 82.871
ensuite, $c = $b - $a... qui donne 2.636
Mais, il arrive sur par exemple une 20aine de calcul d'écart que 2 ou trois se trouve de ce type:
1.54799999999 au lieu de 1.548
1.84300000001 au lieu de 1.843
Quelqu'un a un indice ?
Voici exacement ce que je fais... Y a pas plus simple. (Je crois)
J'ai un tableau de temps avec ce type de valeur 1'20''235, par exemple.
Je souhaite touver l'écart entre 2 temps, par exemple 1'20''235 et 1'22''871
Fonction explode pour avoir "1", "20" et "235" pour le premier et "1", "22" et "871" pour le second.
Je multiplie par 60 le premier chiffre (minutes, ramenées en seconde)
Je laisse tel quel le second chiffre
Je /1000 le troisième (pour avoir les millième en seconde)
Résultat, j'ai $a = 80.235 et $b = 82.871
ensuite, $c = $b - $a... qui donne 2.636
Mais, il arrive sur par exemple une 20aine de calcul d'écart que 2 ou trois se trouve de ce type:
1.54799999999 au lieu de 1.548
1.84300000001 au lieu de 1.843
Quelqu'un a un indice ?
- Haq
- WRInaute passionné

- Messages: 2104
- Inscription: 29 Aoû 2002
Re: PHP... Soustraction étrange !
Grantome a écrit:Je /1000 le troisième (pour avoir les millième en seconde)
Si je comprends bie ce que tu écris, tu divises des millièmes par mille ? Dans ce cas, logique que tu aies des millionnièmes de seconde.
Tu pourrais simplifier tout ça en utilisant les fonctions timestamp() et round() (à moins que tu ne sois contraint d'avoir ton temps sous cette forme, mais rien n'es inéluctable).
Ca prend 3 lignes ce que tu veux faire. Mais si tu ne veux pas changer tout (après tout, ça fonctionne), un $c = round($c,3) arrangera tout.
-

maxttb - WRInaute occasionnel

- Messages: 477
- Inscription: 27 Fév 2004
Je ne suis pas sûr que timestamp gère les 1000emes de secondes. Mais comme tu le dis, simplement faire un round règlerais le problème. Reste à savoir si d'autres effets de bords indésirables peuvent découler de ce bug assez étrange...
-

moktoipas - WRInaute passionné

- Messages: 2326
- Inscription: 29 Juin 2004
Ca me parrait etre tout a fait normal: c'est du a la representation des réel en informatique, la precision n'est pas parfaite et en faisant beaucoup de calcul, l'erreur augmente.
Enfin je suppose que c'est ca , sinon c'est
Je savais que ca existait , mais j'en avais jamais vu
Enfin je suppose que c'est ca , sinon c'est
Je savais que ca existait , mais j'en avais jamais vu
-

MarvinLeRouge - WRInaute impliqué

- Messages: 526
- Inscription: 1 Sep 2004
Citation de la doc php, concernant les nombres à virgule flottante :
Ce sont des bibliothèques destinées principalement au traitement des grands nombres, mais qui peuvent te servir si tu as besoin d'une précision absolue sur des calculs en virgule flottante, puisqu'ils travaillent en fait avec des entiers
Si vous avez besoin d'une précision particulière, reportez-vous au traitement des nombres de grande taille avec les bibliothèques BC ou GMP.
Ce sont des bibliothèques destinées principalement au traitement des grands nombres, mais qui peuvent te servir si tu as besoin d'une précision absolue sur des calculs en virgule flottante, puisqu'ils travaillent en fait avec des entiers
10 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Pb RewriteRule, j'ai une soustraction dans mon résultat !?
- [PHP] Probleme de WARNING étrange...
- (étrange) problème avec FFMPEG-PHP 0.5.1 !
- Probleme etrange html/javascript/php
- Le Probleme le plus etrange que j'ai jamais rencontré en php !
- {RESOLU} [PHP] Problème étrange... date(), time()
- [AIDE] ".php" ajouté à la fin des fichiers, étrange...
- Etrange... vraiment étrange ce Google...
- Pb étrange avec site.com/page vers site.com/index.php?p=page
- La foire aux backlinks sur Google et Yahoo! - 05-12-2004
- Google Dance de juin 2003 : Esmeralda - 16-06-2003
- Google Testing Blog : pour les développeurs - 25-01-2007
- La commande link: sur Google - 20-12-2005
- Des interfaces de recherches spéciales sur Google - 07-03-2003
- BigDaddy, le nouveau data center de test de Google - 06-01-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
