Aktueller Standort: Startseite> Neueste Artikel> Kann IS_DOUBLE bei der Reinigung von Daten dazu beitragen, schwimmende Punktzahlen genau zu identifizieren?

Kann IS_DOUBLE bei der Reinigung von Daten dazu beitragen, schwimmende Punktzahlen genau zu identifizieren?

M66 2025-07-04

Übersicht über die Funktion is_double ()

Verstehen Sie zunächst die grundlegende Verwendung der Funktion is_double () . is_double () ist eine Funktion in PHP, die prüft, ob eine Variable eine schwimmende Nummer ist. In der Tat ist IS_Double () ein Alias ​​für is_float () und die beiden Funktionen sind gleich.

 <span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-number">1.23</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Es ist eine schwimmende Punktzahl"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"不Es ist eine schwimmende Punktzahl"</span></span><span>;
}
</span></span>

Wenn im obigen Code der Wert von $ var eine schwimmende Nummer ist, gibt is_double () true zurück, ansonsten falsch .

Das Arbeitsprinzip und die Grenzen von is_double ()

Die Funktion is_double () kann tatsächlich effektiv beurteilen, ob eine Variable eine schwimmende Zahl ist, aber ihre Urteilskriterien werden anhand des PHP -Systemsystems beurteilt, und das System des PHP -Typs unterscheidet einige Fälle, die scheinbar schwebende Zahl zu sein scheinen.

Zum Beispiel:

 <span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-number">1.23</span></span><span>;    </span><span><span class="hljs-comment">// Schwebende Nummer</span></span><span>
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-number">1.0</span></span><span>;     </span><span><span class="hljs-comment">// Schwebende Nummer</span></span><span>
</span><span><span class="hljs-variable">$var3</span></span><span> = </span><span><span class="hljs-string">"1.23"</span></span><span>;  </span><span><span class="hljs-comment">// Saite "1.23"</span></span><span>
</span><span><span class="hljs-variable">$var4</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;       </span><span><span class="hljs-comment">// Ganze Zahl 1</span></span><span>

</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>));  </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>));  </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span>));  </span><span><span class="hljs-comment">// false</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$var4</span></span><span>));  </span><span><span class="hljs-comment">// false</span></span><span>
</span></span>

Wie im obigen Code gezeigt, kann die Funktion is_double () $ var1 und $ var2 als schwimmende Zahlen korrekt identifizieren, aber keine Zeichenfolgen wie "1.23" erkennen. Aufgrund der automatischen PHP -Konvertierung werden $ var2 ( 1,0 ) und $ var1 ( 1,23 ) als schwimmende Zahlen angesehen, aber die Zeichenfolge "1,23" und die Nummer 1 werden nicht als schwimmende Zahlen erkannt.

Häufige Herausforderungen bei der Datenreinigung

Bei der Datenreinigung begegnen wir in der Regel zwei Arten von Daten, die beurteilt und verarbeitet werden müssen:

  1. Mischtypdaten : Beispielsweise enthalten einige Spalten Daten, die sowohl numerische als auch Zeichenfolgentypen (z. B. "123,45" oder "0,0" ) enthalten. Wenn wir nur IS_DOUBLE () verwenden, um diese Daten zu erkennen, kann diese falsch oder falsch eingeschätzt werden.

  2. Präzisionsproblem : Schwimmzahlen können einen Genauigkeitsverlust erleben, wenn es in Computern gespeichert ist, insbesondere wenn wissenschaftliche Notation verwendet wird, um sehr kleine oder sehr große schwimmende Zahlen darzustellen. is_double () kann diese Art von Problem nicht lösen.

Wie kann man schwimmende Zahlen genauer identifizieren?

Um die Genauigkeit der Datenreinigung zu gewährleisten, benötigen wir möglicherweise eine komplexere Beurteilungslogik. Hier sind einige gemeinsame Lösungen:

Verwenden Sie die Funktion filter_var ()

Die von PHP bereitgestellte Funktion filter_var () hat die Option filter_validate_float , die strenger bestimmen kann, ob eine Zeichenfolge in eine schwimmende Nummer konvertiert werden kann.

 <span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-string">"1.23"</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-string">"123abc"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">filter_var</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>, FILTER_VALIDATE_FLOAT) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$var1</span></span></span><span> 是Schwebende Nummer\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$var1</span></span></span><span> 不是Schwebende Nummer\n";
}

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">filter_var</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>, FILTER_VALIDATE_FLOAT) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$var2</span></span></span><span> 是Schwebende Nummer\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$var2</span></span></span><span> 不是Schwebende Nummer\n";
}
</span></span>

Ausgabe:

 <span><span>1.23 是Schwebende Nummer
123abc 不是Schwebende Nummer
</span></span>

Durch die Verwendung von Filter_var () kann schwimmende Zahlen effektiv aus Zeichenfolgen extrahieren und auch Daten in anderen illegalen Formaten ausschließen, wodurch die Situation vermieden wird, in der IS_DOUBLE () keine String -Typen verarbeiten kann.

Kombiniert mit regelmäßigen Ausdrücken

Wenn wir das Format schwimmender Zahlen strenger steuern möchten, können wir es in Kombination mit regulären Ausdrücken beurteilen. Erkennen Sie beispielsweise, ob es sich um eine gültige schwimmende Nummer handelt (einschließlich negativer Zahlen, Dezimalzahlen usw.).

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isValidFloat</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$var</span></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^-?\d+(\.\d+)?$/'</span></span><span>, </span><span><span class="hljs-variable">$var</span></span><span>);
}

</span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-string">"1.23"</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-string">"123"</span></span><span>;
</span><span><span class="hljs-variable">$var3</span></span><span> = </span><span><span class="hljs-string">"abc"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">isValidFloat</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>) ? </span><span><span class="hljs-string">"是Schwebende Nummer"</span></span><span> : </span><span><span class="hljs-string">"不是Schwebende Nummer"</span></span><span>; </span><span><span class="hljs-comment">// 是Schwebende Nummer</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">isValidFloat</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>) ? </span><span><span class="hljs-string">"是Schwebende Nummer"</span></span><span> : </span><span><span class="hljs-string">"不是Schwebende Nummer"</span></span><span>; </span><span><span class="hljs-comment">// 是Schwebende Nummer</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">isValidFloat</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span>) ? </span><span><span class="hljs-string">"是Schwebende Nummer"</span></span><span> : </span><span><span class="hljs-string">"不是Schwebende Nummer"</span></span><span>; </span><span><span class="hljs-comment">// 不是Schwebende Nummer</span></span><span>
</span></span>

Durch reguläre Ausdrücke können wir das spezifische Format schwebender Zahlen entsprechen und die Erkennungsgenauigkeit weiter verbessern.

Zusammenfassen

Bei der Datenreinigung kann IS_DOUBLE () uns tatsächlich helfen, festzustellen, ob eine Variable eine schwimmende Zahl ist, aber bestimmte Einschränkungen aufweist, insbesondere bei der Verarbeitung von Daten mit gemischten Typen. Es wird auch empfohlen , Filter_var () und reguläre Ausdrücke zu verwenden, um genauere Beurteilungen der schwimmenden Zahl zu fällen. Diese Methoden können eine größere Flexibilität und Genauigkeit liefern, insbesondere bei inkonsistenten Datentypen und -formaten, die eine Fehleinschätzung oder Fehleinschätzung effektiv verringern können.

Wenn Ihre Datenreinigung eine höhere Genauigkeit erfordert, insbesondere wenn es um die Konvertierung von String mit schwimmenden Zahlen geht, sollten Sie leistungsfähigere Tools verwenden, um die Reinigung zu unterstützen.