Module:Wikidata/Formatters/round

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Documentation icon Τεκμηρίωση module[δημιουργία]
local p = {}

local formatNumber = p.formatNumber

local function roundToOneDecimal(value)
	local int, fract = math.modf(value)
	local fract_times_ten = fract * 10
	if fract_times_ten - math.floor(fract_times_ten) < 0.5 then
		return int + math.floor(fract_times_ten) / 10
	else
		return int + math.ceil(fract_times_ten) / 10
	end
end 

function p.formatNumber(value)
	local factor = 1
	if value < 0 then
		value = -value
		factor = -factor
	end
	if value > 10^6 and value < 10^9 then
		return mw.ustring.format('%s&nbsp;mil.', formatNumber(factor * roundToOneDecimal(value / 10^6)))
	elseif value > 10^9 and value < 10^12 then
		return mw.ustring.format('%s&nbsp;mld.', formatNumber(factor * roundToOneDecimal(value / 10^9)))
	else
		return formatNumber(factor * value)
	end
end

return p