2010-09-26 6 views
2

mon script calcule un nombre X en divisant deux autres nombres, A par B.obtenir une erreur de division impair avec PHP number_format()

X = A/B

quand j'utiliser number_format (A, 2) sur A avant de calculer X, j'obtiens un nombre très impair. Les chiffres réels:

1,045.00/5 = 0,2

mais si je ne l'utilise number_format sur A avant la division, j'obtenir la bonne réponse. Est-ce que number_format fait en sorte que A est un non-numéro?

1045/5 = 209

Répondre

2

number_format doit être utilisé que pendant peu l'impression du numéro. Sa valeur de retour ne doit pas être utilisée dans le calcul comme vous l'avez fait.

Exemple:

Si $A = 1045; alors number_format($A,2) sera 1,045.00 maintenant si vous traitez 1,045.00 comme un numéro, il sera 1 comme la virgule et le reste omble sera ignorée et 1/2 est 0.5 que vous obtenez.

+0

merci pour cette réponse claire et suggestion – Phil

0

number_format le fait dans une chaîne avec des virgules entre des milliers, et la virgule va confondre le diviseur en pensant que ce sont les décimels en fonction de vos paramètres régionaux.

1

Les documents montrent que nombre_format renvoie une chaîne. Avez-vous essayé de convertir le résultat de number_format() en un type numérique avant votre manipulation mathématique?

2

Vous voulez round(A, 2), et non number_format() qui est pour les représentations de chaînes (d'où le nom "format").

+0

merci pour cette réponse aussi bien – Phil

1

J'ai eu des problèmes similaires. Il pourrait être préférable d'utiliser les paramètres de format numérique dec_point et thousand_separator. vous pouvez utiliser number_format ($ number, 2, '.', ''); Il aidera à enlever votre séparateur de mille