Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2006, 14h08   #1
Membre régulier
 
Inscription : mai 2004
Messages : 121
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 121
Points : 79
Points : 79
Par défaut [Configuration] La soustraction selon PHP :p

Bonjour à tous,

J'explique le contexte. J'avais une fonction qui permettait de faire des calculs banals avec des "double" positifs.

Jusque la, aucun soucis.

Maintenant je dois gérer les nombres négatifs.

Normalement, le code était prévu pour sauf que :

Méga surprise, selon PHP:

echo 360 + (-360.45);

retourne -0.44999999999999 au lieu de -0.45

quelqu'un a t'il déjà eu ce cas la et comment avez vous corriger ce "bug" ?

PS : Je ne souhaite pas utiliser round(), je souhaite que, par exemple, 360 reste 360 et non 360.00.

Merci par avance
hackrobat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 14h27   #2
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
Pourquoi ne pas utiliser round() et ensuite number_format() ??
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 14h29   #3
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
En effet... ca fait peur ;o)

selon la doc ca peut pourtant arriver...
http://fr2.php.net/manual/fr/language.types.float.php

mais bon, ton cas montre vraiment qu'il ne faut pas se fier aux nombres décimaux avec php...

Apparement, la seule solution est d'utiliser les API faites pour manipuler "réellement" les nombres décimaux (et du coup, de grande taille). Heureusement, elles sont chargées par defaut dans toute configuration php... malheureusement, ca veux dire qu'il faudrait modifier tout ton code...

http://fr2.php.net/manual/fr/ref.bc.php
depuis la 5.1.0 sous windows :
http://fr2.php.net/manual/fr/ref.gmp.php
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 14h55   #4
Membre régulier
 
Inscription : mai 2004
Messages : 121
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 121
Points : 79
Points : 79
ok, merci pour vos reponses, je vais etudier quelle solution je vais appliquer.

Merci et bon week end
hackrobat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h15.


 
 
 
 
Partenaires

Hébergement Web