2015-07-23 2 views
6

Ich habe vor kurzem von Lua 5.2.3 auf 5.3.1 aktualisiert, aber ich bemerkte alle meine Skripte, die eine string.format starten fehlgeschlagen, wenn es versucht zu formatieren ein float%dLua format.string kann float nicht als dezimal formatieren (% d) ab 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 

mit Ist das von Design? Ich kann nicht scheinen, die Änderung irgendwo dokumentiert zu finden.

Antwort

8

In Lua 5.3 hat der Typ number zwei Subtypen, integer und float.

Von string.format

Optionen A, a, E, e, f, G und g alle erwarten eine Zahl als Argument. Optionen c, d, i, o, u, X und x erwarten eine Ganzzahl.

+0

Das Design von Lua 5.3 ist in vielerlei Hinsicht nicht sauber, z. math.tointeger (während tostring & tonumber in _G ist), math.type (nur um integer und float zu unterscheiden), math.ult (unnötig?) usw. – Youka

+0

Danke dafür, das habe ich komplett vermisst (obwohl es das war offensichtlicher Ort zu sehen). Ich glaube, ich habe eine deutlichere Notiz erwartet, dass sie von 5.2-> 5.3 geändert wurde, wie in [hier] (http://www.lua.org/manual/5.3/manual.html#8) – Puddler

Verwandte Themen