在十进制到浮点后得到零的字符串

时间:2017-01-20 10:56:37

标签: php floating-point

我有一个字符串string(5) "388.0"。我只是希望float numberone zerotwo zero完全匹配,或者小数点后的数字。我怎样才能实现它?

简单(浮动)$ val只给我float(388)而没有zero

3 个答案:

答案 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)