Lua的format.string无法将浮点数格式化为十进制数字(%d),自从5.3版本以来。

7

我最近将Lua 5.2.3升级到了5.3.1,但我注意到,如果尝试使用%d格式化float,那么所有执行string.format的脚本都会失败。

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

这是设计问题吗?我似乎找不到任何文档记录这个更改。
1个回答

10
在Lua 5.3中,number类型有两个子类型,integerfloat
来自string.format 选项AaEefGg都需要一个数字作为参数。选项cdiouXx需要一个整数作为参数。

1
Lua 5.3 的设计在许多方面都不够简洁,例如 math.tointeger(而 tostring 和 tonumber 在 _G 中),math.type(仅用于区分整数和浮点数),math.ult(是否有必要?)等。 - Youka
谢谢你提醒我,我完全忽略了它(即使那是显而易见的地方)。我认为我期望有一个更明确的说明来表明它已经从5.2改变到了5.3,就像这里一样。 - Puddler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接