Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Integer-Konvertierungsfehler?

PHP-Integer-Konvertierungsfehler?

WBOY
Freigeben: 2016-08-04 09:20:46
Original
951 Leute haben es durchsucht

$a = 16,4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
PHP-Integer-Konvertierungsfehler?

Kann mir jemand einen Rat geben?

Antwortinhalt:

$a = 16,4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
PHP-Integer-Konvertierungsfehler?

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>
Nach dem Login kopieren

Hat mich schockiert

<code class="php">$a = 16.4 *100;
echo $a.PHP_EOL;
echo intval($a).PHP_EOL;//用PHP_EOL不是挺好</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Intval-Funktionsproblem, Sie können zuerst strval und dann in int konvertieren

<code>echo intval(strval(16.4 *100));  // 1640</code>
Nach dem Login kopieren

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage