【语法】
一、隐蔽陷阱
单号校验要把数字逆序比对,用 string.reverse 转一遍再 tonumber,遇到负数直接返回 nil,日志里只留下一条空值报错,源头很难联想到是负号混了进来。
二、底层原理
整数逆序用取余与整除的组合:每轮取 n%10 拼进结果的十位以上,再把 n 整除 10 去掉末位,直到 n 归零。负号先摘出来记成符号位,只对绝对值逆序,随后把符号接回去,尾部有零时逆序后自然消失。
三、正确代码
基础写法(正整数逆序):
local function reverseInt(n)
local r = 0
while n > 0 do
r = r * 10 + n % 10
n = math.floor(n / 10)
end
return r
end
进阶写法(带符号与尾部零):
local function reverseFull(n)
local neg = n < 0
n = math.abs(n)
local r = 0
while n > 0 do
r = r * 10 + n % 10
n = math.floor(n / 10)
end
return neg and -r or r
end
local p = getplayerbyname("rev01")
sendmsg(p, 1, reverseFull(-1205) .. " 与 " .. reverseFull(3400))
四、引擎验证
reverseFull(-1205) 输出 -502,reverseFull(3400) 输出 43,尾部零消失符合预期;正数 1205 逆序得 5021。
五、FAQ
问:尾部零去哪了?
答:逆序后前导零无意义,自然丢弃。
问:位数很多会失真吗?
答:2^53 内安全,超界走字符串竖式处理。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:玩家装备耐久打空才发现,战力拦腰砍半,打不动怪又投诉掉率。耐久提醒立双档:耐久低于三成弹黄…
【语法】 一、机制原理 抛个坑:行列表格要变成列行,每格都搬一遍还新建了整张表——方形矩阵能不能原地换?转置沿对角线折返:只…
【游戏】 一、规则机制 隐蔽的坑:"最近浏览"里同一件商品重复出现五六次,足迹成了复读机。浏览足迹立两条:每次查看先在足迹里…
【语法】 一、机制原理 一行代码拆解:local bucket = math.floor(v / width)。数值分布统计…
【语法】 一、机制原理 一行代码拆解:setmetatable(cfg, {__index = DEFAULTS})。配置对…
【游戏】 一、规则机制 线上事故:结算时玩家追问"我到底打了多少",战斗中没有任何实时输出面板,事后对不上账。输出统计两步走…