local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
local num = args[1] or '0' -- 输入数字
local leftPadLen = args[2] or '0' -- 左填充长度
local deciPlaces = args[3] or '2' -- 小数位数
-- 四舍五入,{{ #expr: {{formatnum:<num>|R}} round <deciPlaces> }}
local roundedNum = frame:callParserFunction('#expr', frame:callParserFunction('formatnum', num, 'R') .. ' round ' .. deciPlaces)
-- 分割整数与小数部分
local intPart, fracPart = roundedNum:match('^(%-?%d+)%.?(%d*)$')
-- 左填充整数部分,{{padleft:<intPart>|<leftPadLen>}}
local paddedIntPart = frame:callParserFunction('padleft', intPart, leftPadLen)
-- 右填充小数部分
local formattedFracPart = ''
if tonumber(deciPlaces) > 0 then
-- .{{padright:<fracPart>|<deciPlaces>}}
formattedFracPart = '.' .. frame:callParserFunction('padright', fracPart, deciPlaces)
end
return paddedIntPart .. formattedFracPart
end
return p