相比来说,第一种方法要好不少,理由是这样的,比如1.000004在很边界的时候或者0.99999这样子php处理会有问题,会有误差,导致得到的位数不一样。而且精度难以把握,所以处理这种跟边界有关的问题最后能用字符串还是字符串来做。
第一种
private function _getfloatlength($num) {$count = 0;$temp = explode ( '.', $num );if (sizeof ( $temp ) > 1) {$decimal = end ( $temp );$count = strlen ( $decimal );}return $count;}
第二种
function getfloatlength($a){ if(($a-(int)$a)<1e-9){ $count=0; } $a=fmod(1e9*$a,1e9); while($a%10==0){ if($a==0)break; $a=$a/10; $count--; } return count;}