PHP Float преобразование не удается, возвращает 1 - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть функция, которая возвращает значение 1725.00, используя number_format(value,2). Итак, теперь, когда я конвертирую его в float, он дает 1, то же самое для int, intValue, floatValue. Даже я пытался умножить на 100, чтобы получить значение int, но выдает ошибку A non well formed numerical value. Кто-нибудь знает, что здесь не так?

$balance = (float) currentBalance($user_id); // currentBalance gives a value of 1725, but (float) gives makes the value 1.
print_r($balance); die; //gives 1.

Я использую PHP 7.0+ и Laravel 5.8.

1 Ответ

2 голосов
/ 01 ноября 2019

Ваша проблема в том, что number_format возвращает строку с запятыми, вставленными для тысяч разделителей, поэтому возвращаемое значение из вашей функции равно 1,725.00. Когда вы пытаетесь привести это как число с плавающей точкой, PHP достигает запятой и говорит, что это больше не число, и возвращает 1.

Если вам нужно получить отформатированную строку, возвращаемую currentBalance, лучше всего использовать

$balance = (float)str_replace(',', '', currentBalance($user_id));

В противном случае замените вызов на number_format на вызов round так что currentBalance вместо этого возвращает числовое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...