|
On 16/05/16 11:57 PM, Sean Conner wrote:
It was thus said that the Great Soni L. once stated:On 16/05/16 07:09 PM, Sean Conner wrote:It was thus said that the Great Egor Skriptunoff once stated:Hi! It appears that in Lua 5.3 usual call to tonumber() is not enough to correctly parse numbers entered by user from file or keyboard. For example, local googol = tonumber("1"..("0"):rep(100)) gives zero (instead of 1e+100 as in previous Lua versions).I've read the other messages in this thread, and my question is: why was the behavior of tonumber() even changed for Lua 5.3? Have it always return a double because math.tointeger() exists to parse integers. You want a number, use tonumber(). You want to ensure you parse an integer, use math.tointeger(). That would at least prevent problems like this>from happening in the first place. math.tointeger(9223372036854775807.0) ~= 9223372036854775807 so it can't just always return a double. But it would be nice if it was smart about it.You misunderstood me. tonumber() always returns a double or nil if not a double math.tointeger() always returns an integer or nil if not an integer tonumber() isn't smart. math.tointeger() isn't smart. -spc
You mean using strings with math.tointeger()?If that's the case, I think we should have math.tointeger() and math.tofloat(), and tonumber() should be smart. For backwards compatibility, too.
-- Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.