この記事では 2 つの方法を説明します。1 つは、小数点を文字列に変換し、「.」を使用して の後の部分文字列の長さを切り取って削除する方法です。別の方法は、小数 * 10 の N 乗について説明することです。たとえば、10 を 8 乗した場合、8 乗の余りを求め、結果が得られるまで 10 の余りを求め続けます。 10の余りは0ではありません。
それに比べて、最初の方法の方がはるかに優れています。その理由は、たとえば、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; }