2017-01-20 3 views
0

У меня есть строка string(5) "388.0". Я просто хочу получить ровно float number с one zero или two zero или любые цифры, которые появляются после десятичного числа. Как я могу это достичь?Получите нуль строки после десятичной запятой в с плавающей запятой

Просто (поплавок) $ val дает мне только float(388) без zero.

+1

Вам нужно хранить количество десятичных знаков перед заливкой, чтобы плавать. Возможно, подходящий тип (например, класс) может быть уместным. – Yoshi

ответ

1
<?php 

$cost = [ 
301.215, 
359.2487, 
389.21, 
32.0 
]; 

for ($i = 0; $i < count($cost); $i++) { 
    $precision = @count(str_split(explode(".", $cost[$i])[1])); 
    echo number_format($cost[$i], $precision)."\n"; 
} 

//Output 
301.215 
359.2487 
389.21 
32.0 
[Finished in 0.1s] 

Это возвратит число до заданной точности

+0

Что делать, если после десятичной цифры есть 5 цифр? – vijayrana

+0

Проверьте измененный ответ в соответствии с вашим комментарием –

+0

так, а как насчет числа не массива? как в вопросе, какой будет измененный формат ответа? – vijayrana

1

Вы пробовали встроенный number_format функции?

<?php 

$nb = '388.0'; 

var_dump(number_format((float)$nb, 0)); // string '388' 
var_dump(number_format((float)$nb, 1)); // string '388.0' 
var_dump(number_format((float)$nb, 2)); // string '388.00' 

Конечно, если вы приводите вашу строку как поплавок, то он по умолчанию будет (float)388, если число после десятичной точки всех 0. Я не думаю, что есть способ обойти это, но (float)388 === 388.0 правдиво.

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