PHP 浮点转字符串精度丢失的坑


$a = 10.45678790;
$b = strval($a);
$c = sprintf('%.8f',$a);
echo('a->'.$b.'<br/>');//10.45678790
echo('<br/>');
echo('b->'.$b.'<br/>');//10.4567879
echo('<br/>');
echo('c->'.$c.'<br/>');//10.45678790

结果输出 strval 方法 和 (string)$a 都会丢掉最后的那个0 8位小数变成了7位

结论: PHP浮点型转字符串的比较安全的方法是sprintf

sprintf('%.8f',$a)