2015-07-23 8 views
6

Recentemente ho aggiornato da Lua 5.2.3 a 5.3.1 ma ho notato che tutti i miei script che eseguono un string.format hanno avuto esito negativo se ha provato a formattare un float utilizzando %dLua format.string non può formattare float come decimale (% d) a partire da 5.3

local anExampleString = string.format("Sample Number: %d",10.100000001) -- Fails on 5.3.1, works on 5.2.3 
local aWorkingString = string.format("Sample Number: %.0f",10.100000001) -- Works on 5.3.1 

È questo disegno? Non riesco a trovare la modifica documentata da nessuna parte.

risposta

8

In Lua 5.3, il tipo number ha due sottotipi, integer e float.

Da string.format

Opzioni A, a, E, e, f, G e g tutti si aspettano un numero come argomento. Le opzioni c, d, i, o, u, X e x prevedono un numero intero.

+0

Il design di Lua 5.3 non è pulito in molti modi, ad es. math.tointeger (mentre tostring e tonumber si trovano in _G), math.type (solo per differenziare intero e float), math.ult (inutile?), ecc. – Youka

+0

Grazie per quello, l'ho perso completamente (anche se era il posto ovvio da guardare). Penso che mi aspettavo una nota più esplicita per dire che era stata cambiata da 5.2-> 5.3 come in [here] (http://www.lua.org/manual/5.3/manual.html#8) – Puddler

Problemi correlati