Ein mysteriöser PHP-Bug: Doppelpunkt statt 0 bei Float-Rundung

bedienungsanleitung für den neuen router

bedienungsanleitung für den neuen router
von leicagirl (photocase.de)

23.12.2009

Manchmal gehen bei PHP Zahlen und Zeichen durcheinander. Nicht so ganz astreine Typen.

Sowas Schräges hab ich noch selten erlebt. Ein Fehler, der reproduzierbar ist, aber doch nicht immer. In bestimmten PHP-Versionen gibt es beim Konvertieren oder Runden von Floats das Phänomen, dass aus '19' ein '18.:' wird (bei reddit nennt es jemand ASCII rounding mode, da PHP die Periode .999999 ASCII57='9'  zu ASCII58=':' rundet).

Allerdings passierte das in unseren Tests nicht bei jedem Aufruf, sondern mal bei 3/4 aller Aufrufe, mal bei jedem vierten (genauere Berechnungen mit bcmul() etc. reduzierten die Häufigkeit). Es gibt einen offenen Eintrag im PHP-Bugtracker, der auf das Problem hinweist (#47304). Nur stammt der bereits vom 4. Februar. Seitdem kamen nur weitere obskure Hinweise dazu. Kurzfristig half auch mal ein Neustart von Apache, um den Fehler zu eliminieren. Aber am nächsten Tag trat er wieder auf. Dauerhaft erfolgreich waren wir nur mit der Rückkehr zu PHP 5.2.6.

Ein Decimal-Typ wie in Python ist doch was Feines.

Gespeichert unter: Programmierung Systemadministration