PHP中浮点数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函数保留两位小数,去掉千分号方才解决