У меня есть строка string(5) "388.0"
, Я просто хочу получить именно float number
с one zero
или же two zero
или любые числа после десятичного числа. Как мне этого добиться?
Просто (float) $ val дает мне только float(388)
без zero
,
Вы пробовали встроенный 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, то по умолчанию она будет (float)388
если все числа после десятичной точки все 0
, Я не думаю, что есть способ обойти это, но (float)388 === 388.0
правда.
<?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]
Это вернет число с заданной точностью
http://php.net/manual/en/function.bcmul.php
var_dump(bcmul('388.0', '1', 2)); // string '388.0' (length=5)
var_dump(bcmul('388.00', '1', 2)); // string '388.00' (length=5)
var_dump(bcmul('388.0021', '1', 4)); // string '388.0021' (length=5)