2015-07-23 22 views
6

Gần đây tôi đã nâng cấp từ Lua 5.2.3 lên 5.3.1 nhưng tôi nhận thấy tất cả tập lệnh của mình thực hiện string.format không thành công nếu định dạng a float sử dụng %dĐịnh dạng Lua.string không thể định dạng float dưới dạng thập phân (% d) là 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 

Đây có phải là thiết kế không? Tôi dường như không thể tìm thấy sự thay đổi được ghi lại ở bất cứ đâu.

Trả lời

8

Trong Lua 5.3, loại number có hai loại phụ, integerfloat.

Từ string.format

Tùy chọn A, a, E, e, f, G, và g tất cả mong đợi một số như là đối số. Tùy chọn c, d, i, o, u, Xx mong đợi một số nguyên.

+0

Thiết kế của Lua 5.3 không sạch sẽ theo nhiều cách, f.e. math.tointeger (trong khi tostring & tonumber là trong _G), math.type (chỉ để phân biệt số nguyên và float), math.ult (không cần thiết?), v.v. – Youka

+0

Cảm ơn vì điều đó, tôi đã bỏ lỡ hoàn toàn (mặc dù nó là nơi rõ ràng để xem). Tôi nghĩ rằng tôi đã mong đợi một lưu ý rõ ràng hơn để nói rằng nó đã được thay đổi từ 5,2-> 5,3 như trong [ở đây] (http://www.lua.org/manual/5.3/manual.html#8) – Puddler

Các vấn đề liên quan