PHP中浮点数0的小坑

2018年4月11日 0 作者 筱枫

这个坑不常见,影响也不算很大,但有的时候又必须解决,之前在开发一个商城系统的时候,前端要求我传过去的值带有小数,当时我直接用的floatval把值转了一下就过去了,但是没想到,0还是0,而不是0.0

测试代码如下:

$a = 0;

$echo = function($val) { echo $val."\n"; };

$echo('int: '.$a);

$echo('string: '.strval($a));

$echo('float: '.floatval($a));

$echo('double: '.doubleval($a));

$echo('float->strval: '.strval(floatval($a)));

$echo('string: '.number_format($a, 2, '.', ''));


运行结果如下:

如你所见,用floatval、doubleval进行转换都不行,初次我以为是echo的显示问题,用了strval再转换了一下(见第13行),但依旧不行,后来没有办法只能采用number_format函数保留两位小数,去掉千分号方才解决