我有一个字符串string(5) "388.0"
。我只是想要得到float number
与one zero
或two zero
或任何数字在十进制之后。我怎样才能实现它?将小数点后的小数点后的字符串转换为浮点数
简单地(float)$ val只给我float(388)
没有zero
。
我有一个字符串string(5) "388.0"
。我只是想要得到float number
与one zero
或two zero
或任何数字在十进制之后。我怎样才能实现它?将小数点后的小数点后的字符串转换为浮点数
简单地(float)$ val只给我float(388)
没有zero
。
<?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]
这将返回人数达给定精度
您是否尝试过内置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
是真实的。
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)
你需要存储铸造浮动前的小数位数。也许自定义类型(例如类)可能是合适的。 – Yoshi