получить странную ошибку деления с помощью PHP number_format () - PullRequest
2 голосов
/ 26 сентября 2010

Мой сценарий вычисляет число X путем деления двух других чисел, A на B.

X = A / B

, когда я использую number_format (A, 2) для A перед вычислением XЯ получаю очень странное число.Фактические цифры:

1 045,00 / 5 = 0,2

, но если я не использую number_format на A перед делением, я получу правильный ответ.Является ли number_format каким-то образом сделать A не числом?

1045/5 = 209

Ответы [ 5 ]

2 голосов
/ 26 сентября 2010

Вы хотите round(A, 2), а не number_format(), который предназначен для строковых представлений (отсюда и название «формат»).

2 голосов
/ 26 сентября 2010

number_format следует использовать только при красивой печати номера.Его возвращаемое значение не должно использоваться в вычислениях, как вы.

Пример:

Если $A = 1045;, тогда number_format($A,2) будет теперь 1,045.00, если вы обрабатываете 1,045.00 как число, которое онобудет 1 запятой, а оставшийся символ будет игнорироваться, а 1/2 будет 0.5, который вы получаете.

1 голос
/ 18 апреля 2014

У меня были похожие проблемы.Было бы лучше, если бы мы использовали числовой формат dec_point и параметры тысяч_сепаратора.Вы можете использовать number_format ($ number, 2, '.', '');Это поможет удалить ваш разделитель тысяч

1 голос
/ 26 сентября 2010

Документы показывают, что number_format возвращает строку.Вы пытались преобразовать результат number_format () в числовой тип перед математической манипуляцией?

0 голосов
/ 26 сентября 2010

number_format превращает его в строку с запятыми между тысячами, и запятая будет путать делитель с мыслью, что это децимелы в зависимости от вашей локали.

...