Heim > Artikel > Backend-Entwicklung > PHP-Integer-Konvertierungsfehler?
$a = 16,4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
Kann mir jemand einen Rat geben?
$a = 16,4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
Kann mir jemand einen Rat geben?
Ähnliche Fragen von SF
Brother Birds Erklärung von PHP int und float
16,4 ist 16,399999 in der Maschine......
16,399999*100 = 16,399999. intval entfernt direkt die Mantisse
<code class="php">echo " ";</code>
Hat mich schockiert
<code class="php">$a = 16.4 *100; echo $a.PHP_EOL; echo intval($a).PHP_EOL;//用PHP_EOL不是挺好</code>
Eigentlich denke ich, dass es sich um einen Fehler in PHP handelt, aber mit etwas Aufmerksamkeit wird er behoben sein.
PHPs Ganzzahlverarbeitung umfasst das Runden, Abrunden und Aufrunden. Wie @lettermu bereits erklärt hat, gibt es im Binärformat keine 16,4 und kann nur angenähert werden, sodass 16,4*100 nicht 1640, sondern 1639,99999999999999999999999999999999999999999999999999999999999999999999999999999999999 der. Ich weiß nicht, welche spezifische Verarbeitung intern erfolgt, aber durch einen einfachen Test kann festgestellt werden, dass PHP bei der Konvertierung in eine Ganzzahl abrundet statt zu runden.
<code>$a = 16.4 * 100; //其实很多小数都有类似问题,也不限于PHP echo (string) $a . "\n"; echo (int) $a . "\n"; echo floor($a) . "\n"; echo ceil($a) . "\n"; echo (int)(string) $a . "\n";</code>
Intval-Funktionsproblem, Sie können zuerst strval und dann in int konvertieren
<code>echo intval(strval(16.4 *100)); // 1640</code>
Das stimmt. Deine Art, Linien zu verpacken, lässt meine Augen strahlen. Es fühlt sich an, als hätte sie die Tür zu einer neuen Welt geöffnet23333