2014-06-12 17 views
5

Die aktuellen Versionen von Lua unterstützen keine Ganzzahlen, sondern nur Gleitkommazahlen. (Mit dem kommenden 5.3 das ändert sich, aber lassen Sie uns das ignorieren.)Warum sollten wir lua_pushinteger() verwenden?

Also, meine Frage ist: Was gibt es in lua_pushinteger()? Wenn die Zahlen in einen Float umgewandelt werden, warum nicht direkt lua_pushnumber()?

(Bitte nicht „mit 5.3 für zukünftige Kompatibilität“ beantworten, die für heute eine gute Antwort ist, aber eine Antwort, die sonst nicht erfüllt meine curisoty: integer Unterstützung nicht in den alten Tagen erwartet Ich möchte den Grund wissen lua_pushinteger() wurde in erster Linie eingeführt, nicht im Nachhinein entschuldigend.)

+0

Warnungen vor einem möglichen Informationsverlust unterdrücken? –

+0

Die Antwort, die Sie vorschlagen, ist die, die korrekt ist. Früher habe ich * integer und * nicht unterzeichnete 5.3 in meinem Code ignoriert, aber jetzt sehe ich, dass der * integer und * unsigned Code eingeführt wurde, um uns in 5.3 zu erleichtern. – user1095108

Antwort

5

Die explizite Behandlung von Ganzzahlen in der API wurde für die Dokumentation, Leistung und Richtigkeit eingeführt.

Durch die Konzentration auf die Ganzzahlverarbeitung innerhalb der API kann der Kern die beste Konvertierung von und nach Floats verwenden. In einigen Plattformen kann dies teuer sein, wenn es naiv gehandhabt wird. Außerdem kann der Core auf Überlauf prüfen, obwohl Lua 5.1 und 5.2 dies nicht überprüft haben.

+0

Danke. Ich habe eine kleine Frage: Ich verstehe was "Dokumentation" und "Performance" hier bedeuten, aber was meinst du mit "Korrektheit"? Da Lua nicht nach einem Überlauf sucht, wie sonst kann eine Umwandlung von int in float falsch sein? –

+0

@NiccoloM., Könnte * * auf Überlauf prüfen ... – lhf

Verwandte Themen