7
votes

Problème d'arrondi PHP (5.2.3)?

Je me demande si j'ai trouvé un problème avec l'arrondi en PHP, plus précisément 5.2.3 (je ne suis pas sûr d'autres versions pour le moment):

printf('%.18F', 5.000 / 100 * 0.7);


0 commentaires

3 Réponses :


3
votes

Python dit:

>>> repr(5./100*0.7)
'0.034999999999999996'


2 commentaires

Une idée s'il y a un moyen de l'obtenir dans PHP?


printf ('%. 18f', 5.000 / 100 * 0,7);



0
votes

Vous pouvez utiliser php_round_half_up, mais il y a un problème que le numéro se transforme en soi à "99999 ..."


0 commentaires

7
votes

Les flotteurs sont diaboliques.

citating the Documentation manuelle PHP sur Numéros de points flottants :

Ne faites jamais confiance aux résultats du numéro flottant au dernier chiffre et ne comparez jamais les numéros de points flottants pour l'égalité. Si une précision supérieure est nécessaire, le Fonctions mathématiques de précision arbitraires et Les fonctions GMP sont disponibles.

Si vous voulez savoir pourquoi et comment les floats fonctionnent, je vous recommande de regarder:
Tout ce que vous ne voulez pas savoir sur les numéros JavaScript


1 commentaires

Merci, fini par utiliser les fonctions mathématiques de la BC.