Module:NumberAbbr: Difference between revisions
Appearance
MisterChuChu (talk | contribs) Add minus to abbr tag title |
MisterChuChu (talk | contribs) Fix a bug related to calculating illion 999 |
||
(One intermediate revision by the same user not shown) | |||
Line 6: | Line 6: | ||
local s=f.args[3]~=nil and math.max(f.args[3],3) or 6 --start at 10^ | local s=f.args[3]~=nil and math.max(f.args[3],3) or 6 --start at 10^ | ||
local abt=f.args[4]==nil and false or f.args[4] --use abbr tag? | local abt=f.args[4]==nil and false or f.args[4] --use abbr tag? | ||
local ps=f.args[5]==nil and false or f.args[5] --add plus symbol to positive numbers? | |||
local chk=string.gsub(n,",","") --remove commas | local chk=string.gsub(n,",","") --remove commas | ||
Line 58: | Line 59: | ||
end | end | ||
m=m>0 and "-" or "" | m=m>0 and "-" or chk~="0" and ps and "+" or "" | ||
return | return ep>=s and (abt and "<abbr title=\""..m..n.."\">" or "")..m..nn..""..(not isinf and p.illion({args={math.floor(ep/3-1)}}) or "")..(abt and "</abbr>" or "") or m..n | ||
end | end | ||
end | end | ||
Line 78: | Line 79: | ||
if n>=math.huge then | if n>=math.huge then | ||
return math.huge | return math.huge | ||
elseif n> | elseif n>999 then | ||
i=10^(3*math.floor(math.log10(n)/3)) | i=10^(3*math.floor(math.log10(n)/3)) | ||
return (math.floor(n/i)>1 and p.illion({args={math.floor(n/i),false}}) or "")..(math.floor(math.log10(n)/3)<=#e3 and e3[math.floor(math.log10(n)/3)] or "["..math.floor(math.log10(n)/3).."]")..(r<3 and p.illion({args={n%i,nil,true,r+1}}) or "")..(r==3 and "..." or "") --it can only go so far down, this limit is to prevent not enough memory errors | return (math.floor(n/i)>1 and p.illion({args={math.floor(n/i),false}}) or "")..(math.floor(math.log10(n)/3)<=#e3 and e3[math.floor(math.log10(n)/3)] or "["..math.floor(math.log10(n)/3).."]")..(r<3 and p.illion({args={n%i,nil,true,r+1}}) or "")..(r==3 and "..." or "") --it can only go so far down, this limit is to prevent not enough memory errors |