Module:Sandbox: Difference between revisions

From Path of Exile 2 Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}
local getArgs
 
function p._main(n, d)
function p.main(frame)
local num = tonumber(n)
if not getArgs then
if not num then
getArgs = require('Module:Arguments').getArgs
error('Unable to convert "' .. tostring(n) .. '" to a number')
end
local decimals = tonumber(d)
if not decimals then
error('Unable to convert "' .. tostring(d) .. '" to a number')
end
end
local args = getArgs(frame)
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 not glob then
if decimals > maxDecimals then decimals = maxDecimals end
glob = args.glob
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)
end
end
return glob
end
end
 
function p.main(frame)
local args, pargs = frame.args, frame:getParent().args
return p._main(mw.ext.ParserFunctions.expr(args[1] or pargs[1]), mw.ext.ParserFunctions.expr(args[2] or pargs[2]))
end
return p
return p

Revision as of 17:54, 28 April 2015

Module documentation[view] [edit] [history] [purge]


This page is not an actual Scribunto module. It exists to provide editors a place to create experimental modules.

Naming your modules

To keep things tidy, please use the following format to name your experimental modules:

Module:Sandbox/Your username/Module name

Cleaning up unused modules

Experimental modules may be deleted by admins upon request or after a long period of inactivity.

List of modules in this area

For a list of the experimental modules under Module:Sandbox, see Special:PrefixIndex/Module:Sandbox/.

local p = {}
 
function p._main(n, d)
	local num = tonumber(n)
	if not num then
		error('Unable to convert "' .. tostring(n) .. '" to a number')
	end
	local decimals = tonumber(d)
	if not decimals then
		error('Unable to convert "' .. tostring(d) .. '" to a number')
	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)
	end
end
 
function p.main(frame)
	local args, pargs = frame.args, frame:getParent().args
	return p._main(mw.ext.ParserFunctions.expr(args[1] or pargs[1]), mw.ext.ParserFunctions.expr(args[2] or pargs[2]))
end
 
return p