မော်ဂျူး:Decimals
မော်ဂျူးမှတ်တမ်းလက်စွဲ[ဖန်တီး]
သင့်အနေဖြင့် ဤ Scribunto module အတွက် အသုံးပြုလက်စွဲ စာမျက်နှာကို ဖန်တီး နိုင်ပါသည်။ တည်းဖြတ်သူများအနေဖြင့် ဤမော်ဂျူး၏ sandbox (ဖန်တီး | ပုံတူပွား) နှင့် testcases (ဖန်တီး) စာမျက်နှာများကို စမ်းသပ်နိုင်ပါသည်။ စာမျက်နှာခွဲ /doc တွင် ကဏ္ဍများထည့်သွင်းပါ။ ဤ မော်ဂျူး ၏ စာမျက်နှာခွဲများ။. |
require('strict')
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
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