Module:Percentage
From Zoophilia Wiki
Documentation for this module may be created at Module:Percentage/doc
--
-- This module implements [[Template:Percentage]]
--
local p = {}
local math_module = require( "Module:Math" )
local precision = math_module._precision
local sortkey = require( "Module:Sortkey" )
local function rnd(num, digits)
-- This function implements {{rnd}}
return math_module._precision_format(tostring(num), digits)
end
local function oom(num)
-- This function implements {{order of magnitude}}
return math_module._order(tostring(num))
end
function percentage(n1, n2, prec, suffix, pad, sigfig)
local pct = 100*n1/n2
skey = '<span data-sort-value="'
.. sortkey._sortKeyForNumber(pct) .. '♠" style="display:none"></span>'
-- prec = math.floor(prec)
if sigfig ~= '' then
if pct ~= 0 then
return skey .. rnd(pct, tonumber(sigfig) - oom(pct) - 1) .. suffix
else
return skey .. rnd(pct, tonumber(sigfig) - 3) .. suffix
end
end
if pad ~= '' then
return skey .. rnd(pct, prec) .. suffix
end
prec = (prec < 0) and 0 or prec
if pct ~= 0 then
pct = ((pct < 0) and -1 or 1)*math.floor(math.abs(pct * 10^prec) + 0.5) / 10^prec
end
return skey .. pct .. suffix
end
function p.main(frame)
return percentage(
tonumber(frame.args[1]) or 0,
tonumber(frame.args[2]) or 100,
tonumber(frame.args[3] or frame.args['pad']) or 0,
frame.args['%'] or '%', frame.args['pad'] or '',
frame.args['sigfig'] or ''
)
end
return p