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

PHP-Integer-Konvertierungsfehler?

WBOY
WBOYOriginal
2016-08-04 09:20:46911Durchsuche

$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>

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

Stellungnahme:
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