PHP 浮点数的一些坑=>使用BCMath

in PHP with 0 comment

日常在php使用中,经常有保留2位小数等各类需求,容易触发浮点数的坑。

foreach ([11.7999, 12.8, 8.99999, 6.534, 6.501, 6, 13.4, 19.1111, 7.53, 9.0999, 5.08, 5.02, 8.2] as $value) {
    echo $value . '->';
    echo floor($value*100)/100;
    echo PHP_EOL;
}
/**
11.7999->11.79
12.8->12.8
8.99999->8.99
6.534->6.53
6.501->6.5
6->6
13.4->13.4
19.1111->19.11
7.53->7.53
9.0999->9.09
5.08->5.08
5.02->5.01
8.2->8.19
**/

所以还是使用BCMath 扩展系列函数来进行计算

foreach ([11.7999, 12.8, 8.99999, 6.534, 6.501, 6, 13.4, 19.1111, 7.53, 9.0999, 5.08, 5.02, 8.2] as $value) {
    echo $value . '->';
    echo floatval(bcmul($value, 1, 2));
    echo PHP_EOL;
}
/**
11.7999->11.79
12.8->12.8
8.99999->8.99
6.534->6.53
6.501->6.5
6->6
13.4->13.4
19.1111->19.11
7.53->7.53
9.0999->9.09
5.08->5.08
5.02->5.02
8.2->8.2
**/
Comments are closed.