Module:Math: Difference between revisions
Jump to navigation
Jump to search
typo fix
m (1 revision imported) |
(typo fix) |
||
Line 532: | Line 532: | ||
return formatted_num | return formatted_num | ||
end | |||
--[[ | |||
divide | |||
Implements the division operator | |||
Usage: | |||
{{#invoke:Math | divide | x | y | round= | precision= }} | |||
--]] | |||
function wrap.divide(args) | |||
local x = args[1] | |||
local y = args[2] | |||
local round = args.round | |||
local precision = args.precision | |||
if not yesno then | |||
yesno = require('Module:Yesno') | |||
end | |||
return p._divide(x, y, yesno(round), precision) | |||
end | |||
function p._divide(x, y, round, precision) | |||
if y == nil or y == "" then | |||
return err("Empty divisor") | |||
elseif not tonumber(y) then | |||
if type(y) == 'string' and string.sub(y, 1, 1) == '<' then | |||
return y | |||
else | |||
return err("Not a number: " .. y) | |||
end | |||
elseif x == nil or x == "" then | |||
return err("Empty dividend") | |||
elseif not tonumber(x) then | |||
if type(x) == 'string' and string.sub(x, 1, 1) == '<' then | |||
return x | |||
else | |||
return err("Not a number: " .. x) | |||
end | |||
else | |||
local z = x / y | |||
if round then | |||
return p._round(z, 0) | |||
elseif precision then | |||
return p._round(z, precision) | |||
else | |||
return z | |||
end | |||
end | |||
end | end | ||