2015-12-28 5 views
1

Я пытаюсь извлечь данные из базы данных с помощью json. но данные из базы данных имеют тип String, вызывающий ошибку.Как преобразовать форматированное число в 2 десятичных разряда и сохранить возвращаемый тип float

Что я хочу сделать, это форматировать данные для типа float с 2 десятичными знаками.

Я прошел через похожие вероятные ответы, но никто, кажется, не решает проблему.

Это то, что я сделал.

$num1 = "9"; 

//Using number_format 
echo (float) number_format($num1,2,'.',''); // result is 9 instead of 9.00 

//Using Floatval 
echo floatval("9"); // result is 9 instead of 9.00 

Как я могу получить результат в формате 9.00?

+1

Вы можете либо иметь поплавок '9', либо иметь строковое представление' 9' как '9.00'. Сохраните его как float, а затем используйте 'number_format()' или другое, когда это необходимо, чтобы отформатировать его для отображения и т. Д. – AbraCadaver

ответ

-1

попробовать это: echo number_format ((float) $num1, 2, '.', '');

формат этого: string number_format (float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = ",") от http://php.net/manual/en/function.number-format.php

другой метод: sprintf('%0.2f', $num1);

и Sprintf используется для строк формата и могут быть применимы в других областях , http://php.net/manual/en/function.sprintf.php

+0

Спасибо @ViperCode, мне нужен тип данных float в качестве конечного значения. –

+0

@CyrusOlu Это не имеет смысла. 'echo' просто отображает число, оно ничего не меняет. – Barmar

0

Вам нужно поместить (float) внутри number_format.

echo number_format((float) $num, 2, '.',''); 
+0

Спасибо @ P.Gearman, но возвращаемый тип number_format все равно будет строкой. Мне нужно плавать. $ num = "9"; echo $ num2 = number_format ((float) $ num, 2, '.', ''); echo gettype ($ num2); –

+0

Если вы используете $ new_num = floatval ($ num); , который даст вам переменную типа double. Затем вы можете использовать number_format ($ new_num, 2, '.', ''); , чтобы получить отформатированный номер. –

Смежные вопросы