Hi Martin.
Sorry, war beim Spocht :-)
* Woher weißt du das?
Ich bin da mal bei einer ganz ähnlichen wie der hier gefragten Sache drüber gestolpert. "Gestolpert" dabei im positivsten Sinne, denn ich sehe keinen guten Grund, warum ein Operator, der bei der Eingabe zweier (bestimmter) ganzer Zahlen auch eine ganze Zahl ausgibt, diese als float liefern sollte[1]. Die Standard-String-Ausgaben (sprich: die Ausgabe von echo) sind in beiden Fällen identisch, und wenn ich den Wert für weitere Berechnungen als float brauche, dann liefert mir das die Standard-Typumwandlung immer noch rechtzeitig.
* Für welche Version(en) mag das gelten?
Zumindest für 4 und 5. Und ich setz einfach mal nen Zehner, dass es für < 4 ebenso gilt :-)
Und selbst wenn ich davon ausgehe, dass deine Aussage stimmt und dass das bei allen bisherigen PHP-Versionen so war: Da sie der Doku widerspricht, muss ich damit rechnen, dass dieses durchaus interessante Feature in einer der nächsten Versionen geändert werden könnte.
Joa, weiß nicht so recht. Meine Interpretation der Sache ist eher, dass das kein Bug ist, sondern schlicht und einfach ein Fehler in der Dokumentation. Erstens, weil ich nicht der erste bin, dem das aufgefallen ist (siehe etwa die Kommentare in der Doku) und es wohl längst gefixt wäre, und zweitens, wie oben beschrieben, weil es denkbar unsinnig wäre, es anders machen zu wollen. Aber wissen tu' ichs nicht.
[1] Jedenfalls dann, wenn der gesamte Algorithmus mit Integer-Arithmetik auskommt. Die Wurzelfunktion sqrt() z.B. liefert immer einen float-Wert, auch wenn die Wurzel ganzzahlig ist. Was auch Sinn macht, weil der Wert ohnehin als float approximiert wird. Der Algorithmus könnte natürlich vorneweg ermitteln, ob es eine ganzzahlige Wurzel gibt, aber das ginge natürlich i.a. auf Kosten der Effizienz.
Viele Grüße,
der Bademeister