Módulo:Romano
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
Este módulo implementa a predefinição {{Números romanos}}
. Coloca o primeiro parâmetro (número positivo ou negativo) em romano.
Ver também
-- Este módulo implementa {{Romano}}.local p = {}-- barra horizontal {{sobrelinhado}} de nomes elevado.local function sobrelinhado( s ) return '<span style="text-decoration:overline">' .. s .. '</span>'end-- Obtem os números Romano de uma tabela númerica. Devolve ambos texto do-- números e o valor do número depois dele ser processado.local function getLetters( num, t ) local ret = {} for _, v in ipairs( t ) do local val, letter = unpack( v ) while num >= val do num = num - val table.insert( ret, letter ) end end return table.concat( ret ), numendfunction p.toRoman( num, default ) num = tonumber( num ) if not num or num < 1 or num == math.huge then return end num = math.floor( num ) -- Return a message for numbers too big to be expressed in Roman numerals. if num >= 5000000 then return default or 'N/A' end local ret = '' -- Find the Roman numerals for the large part of numbers 5000 and bigger. -- The if statement is not strictly necessary, but makes the algorithm -- more efficient for smaller numbers. if num >= 5000 then local bigRomans = { { 1000000, 'M' }, { 900000, 'CM' }, { 500000, 'D' }, { 400000, 'CD' }, { 100000, 'C' }, { 90000, 'XC' }, { 50000, 'L' }, { 40000, 'XL' }, { 10000, 'X' }, { 5000, 'V' } } local bigLetters bigLetters, num = getLetters( num, bigRomans ) ret = sobrelinhado( bigLetters ) end -- Find the Roman numerals for numbers 4999 or less. local smallRomans = { {1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"}, {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"}, {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"} } local smallLetters = getLetters( num, smallRomans ) ret = ret .. smallLetters return retendfunction p.fromRoman( str, default ) local strOrig = str str = str:upper() if not str:find( '^[MDCLXVI]+$' ) then return tonumber( str ) or default or strOrig end local smallRomans = { I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000 } local result = 0 local old, n = 0 for i = str:len(), 1, -1 do n = smallRomans[ str:sub( i, i ) ] if n < old then result = result - n else result = result + n old = n end end return resultend-- compatibility with [[en:Module:Roman]]function p._main(args) return p.toRoman( args[1] )endfunction p.main( frame ) return p.nomeEmRomano( frame )end-- functions to call the module from a template (takes the #invoke first arg or the template first arg)function p.nomeEmRomano( frame ) local num if frame == mw.getCurrentFrame() then num = frame.args[1] or frame:getParent().args[1] else num = frame end return p.toRoman( mw.text.trim( num or '' ) )endfunction p.nomeDepoisRomano( frame ) local str if frame == mw.getCurrentFrame() then str = frame.args[1] or frame:getParent().args[1] else str = frame end return p.fromRoman( mw.text.trim( str or '' ) )end return p
🔥 Top keywords: Wikipédia:Página principalEspecial:PesquisarSilvio LuizAntero GrecoWashington RodriguesChatGPTCleópatraMárcia (cantora brasileira)Paulo SoaresYasukeYouTubeNova CaledóniaCandombléCássio RamosEnchentes no Rio Grande do Sul em 2024Verinha DarcyRio Grande do SulPablo MarçalSony ChannelAMBEVCanal BrasilEduardo LeiteFicheiro:Logotipo da GloboNews.pngBrasilDanubio Fútbol ClubSalomãoEslováquiaBaby ReindeerJuraj Cintula16 de maioPaulo PimentaWhatsAppHigh Frequency Active Auroral Research ProgramRobert FicoCopa Libertadores da América de 2024Club BolívarAlma GêmeaCopa Libertadores da AméricaCristiano Ronaldo