我有一个字符串string(5) "388.0"
。我只是希望float number
与one zero
或two zero
完全匹配,或者小数点后的数字。我怎样才能实现它?
简单(浮动)$ val只给我float(388)
而没有zero
。
答案 0 :(得分: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]
这将返回给定精度的数字
答案 1 :(得分: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
是正确的。
答案 2 :(得分:0)
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)