Modulo:Decimals

Manipud iti Wikipedia, ti nawaya nga ensiklopedia
Darsen a mapan iti pagdaliasatan Darsen a mapan agbiruk
Dokumentasion ti modulo[kitaen] [urnosen] [pakasaritaan] [purgaen]

Panagusar[urnosen ti taudan]

Daytoy a modulo ket isayangkatna ti {{decimals}}. Para kadagiti pakaaamo ti panagusar, pangaasi a kitaen ti dokumentasionna.

Manipud kadagiti modulo ti Lua[urnosen ti taudan]

local roundAndPad = require('Modulo:Decimals')._main
result = roundAndPad(n, decimals)

Manipud iti wikitext[urnosen ti taudan]

{{#invoke:Decimals|main|n|decimals}}

require('Modulo:No globals')

local p = {}

function p._main(n, d)
	local num = tonumber(n)
	if not num then
		error('Saan a maipagbaliwen ti "' .. tostring(n) .. '" iti maysa a bilang')
	end
	local decimals = tonumber(d)
	if not decimals then
		error('Saan a maipagbaliwen ti "' .. tostring(d) .. '" iti maysa a bilang')
	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
	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)
end

return p