Mô đun:Decimals
Giao diện
require('strict')local p = {}function p._main(n, d) local num = tonumber(n) if not num then error('Không thể chuyển đổi "' .. tostring(n) .. '" thành số') end local decimals = tonumber(d) if not decimals then error('Không thể chuyển đổi "' .. tostring(d) .. '" thành số') end local maxDecimals = 14 - math.floor(math.log10(num)) -- to allow a maximum of 15 significant figures, which is the highest guaranteed correct with doubles if decimals > maxDecimals then decimals = maxDecimals end local mult = 10^decimals num = math.floor(num * mult + 0.5) / mult if decimals < 0 then return tostring(num) else return string.format('%.' .. decimals .. 'f', num) endendfunction p.main(frame) local args, pargs = frame.args, frame:getParent().args local function work() return p._main( mw.ext.ParserFunctions.expr(args[1] or pargs[1]), mw.ext.ParserFunctions.expr(args[2] or pargs[2]) ) end local success, result = pcall(work) if success then return result end local errtext = args.error or pargs.error if errtext then return errtext end error(result, 0)endreturn p