<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://es.wikijournal.org/w-wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMath</id>
	<title>Módulo:Math - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://es.wikijournal.org/w-wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMath"/>
	<link rel="alternate" type="text/html" href="https://es.wikijournal.org/w-wiki/index.php?title=M%C3%B3dulo:Math&amp;action=history"/>
	<updated>2026-04-28T13:17:17Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://es.wikijournal.org/w-wiki/index.php?title=M%C3%B3dulo:Math&amp;diff=780&amp;oldid=prev</id>
		<title>Philip: 1 revisión importada</title>
		<link rel="alternate" type="text/html" href="https://es.wikijournal.org/w-wiki/index.php?title=M%C3%B3dulo:Math&amp;diff=780&amp;oldid=prev"/>
		<updated>2025-02-15T12:29:31Z</updated>

		<summary type="html">&lt;p&gt;1 revisión importada&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 15:29 15 feb 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikijournal_org-es__:diff:1.41:old-779:rev-780 --&gt;
&lt;/table&gt;</summary>
		<author><name>Philip</name></author>
	</entry>
	<entry>
		<id>https://es.wikijournal.org/w-wiki/index.php?title=M%C3%B3dulo:Math&amp;diff=779&amp;oldid=prev</id>
		<title>es__&gt;LuchoCR: Cambió la configuración de protección de «Módulo:Math»: Módulo o plantilla muy utilizado/sensible ([Editar=Permitir solo editores de plantillas y administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://es.wikijournal.org/w-wiki/index.php?title=M%C3%B3dulo:Math&amp;diff=779&amp;oldid=prev"/>
		<updated>2023-02-28T18:53:42Z</updated>

		<summary type="html">&lt;p&gt;Cambió la configuración de protección de «&lt;a href=&quot;/wiki/M%C3%B3dulo:Math&quot; title=&quot;Módulo:Math&quot;&gt;Módulo:Math&lt;/a&gt;»: Módulo o plantilla muy utilizado/sensible ([Editar=Permitir solo editores de plantillas y administradores] (indefinido))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
Este módulo proporciona una serie de operaciones matemáticas básicas.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local z = {}&lt;br /&gt;
&lt;br /&gt;
-- Genera un número aleatorio&lt;br /&gt;
function z.random(frame)&lt;br /&gt;
    local first = tonumber(frame.args[1])&lt;br /&gt;
    local second = tonumber(frame.args[2])&lt;br /&gt;
    local seed = tonumber(frame.args.seed)&lt;br /&gt;
    if seed then&lt;br /&gt;
        math.randomseed(seed * os.time())    -- inicialización pseudoaleatoria&lt;br /&gt;
    end&lt;br /&gt;
    if first and second then&lt;br /&gt;
        if first &amp;lt; second then&lt;br /&gt;
            return math.random(first,second)    -- entero entre [first,second]&lt;br /&gt;
        else&lt;br /&gt;
            return math.random(second,first)&lt;br /&gt;
        end&lt;br /&gt;
    elseif first then&lt;br /&gt;
        if first &amp;gt; 0 then&lt;br /&gt;
            return math.random(first)    -- entero entre [1,first]&lt;br /&gt;
        else&lt;br /&gt;
            return math.random(first,-1)&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return math.random()    -- número real entre [0,1)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
order&lt;br /&gt;
&lt;br /&gt;
Determina el orden y la magnitud de los números&lt;br /&gt;
&lt;br /&gt;
Uso:&lt;br /&gt;
    {{#invoke: Math | order | &amp;lt;valor&amp;gt; }}&lt;br /&gt;
]]&lt;br /&gt;
function z.order(frame)&lt;br /&gt;
    local input_string = (frame.args[1] or frame.args.x or &amp;#039;0&amp;#039;);&lt;br /&gt;
    local input_number;&lt;br /&gt;
    &lt;br /&gt;
    input_number = z._cleanNumber( frame, input_string );&lt;br /&gt;
    if input_number == nil then&lt;br /&gt;
        return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;small&amp;gt;Error de formato: El orden de magnitud debe ser numérico&amp;lt;/small&amp;gt;&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._order( input_number )&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._order(x)&lt;br /&gt;
    if x == 0 then return 0 end&lt;br /&gt;
    return math.floor(math.log10(math.abs(x)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision&lt;br /&gt;
&lt;br /&gt;
Detemina la precisión de un número usando la representación de cadena&lt;br /&gt;
&lt;br /&gt;
Usar:&lt;br /&gt;
    {{ #invoke: Math | precision | &amp;lt;valor&amp;gt; }}&lt;br /&gt;
]]&lt;br /&gt;
function z.precision( frame )&lt;br /&gt;
    local input_string = (frame.args[1] or frame.args.x or &amp;#039;0&amp;#039;);&lt;br /&gt;
    local trap_fraction = frame.args.check_fraction or false;&lt;br /&gt;
    local input_number;&lt;br /&gt;
    &lt;br /&gt;
    if type( trap_fraction ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
        trap_fraction = trap_fraction:lower();&lt;br /&gt;
        if trap_fraction == &amp;#039;false&amp;#039; or trap_fraction == &amp;#039;0&amp;#039; or&lt;br /&gt;
                trap_fraction == &amp;#039;no&amp;#039; or trap_fraction == &amp;#039;&amp;#039; then&lt;br /&gt;
            trap_fraction = false;&lt;br /&gt;
        else&lt;br /&gt;
            trap_fraction = true;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if trap_fraction then&lt;br /&gt;
        local pos = string.find( input_string, &amp;#039;/&amp;#039;, 1, true );&lt;br /&gt;
        if pos ~= nil then&lt;br /&gt;
            if string.find( input_string, &amp;#039;/&amp;#039;, pos + 1, true ) == nil then&lt;br /&gt;
                local denominator = string.sub( input_string, pos+1, -1 );&lt;br /&gt;
                local denom_value = tonumber( denominator );&lt;br /&gt;
                if denom_value ~= nil then&lt;br /&gt;
                    return math.log10(denom_value);&lt;br /&gt;
                end&lt;br /&gt;
            end                        &lt;br /&gt;
        end&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    input_number, input_string = z._cleanNumber( frame, input_string );&lt;br /&gt;
    if input_string == nil then&lt;br /&gt;
        return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;small&amp;gt;Error de formato: El valor de precisión ha de ser numérico&amp;lt;/small&amp;gt;&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._precision( input_string )&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._precision( x )    &lt;br /&gt;
    x = string.upper( x )&lt;br /&gt;
&lt;br /&gt;
    local decimal = string.find( x, &amp;#039;.&amp;#039;, 1, true )&lt;br /&gt;
    local exponent_pos = string.find( x, &amp;#039;E&amp;#039;, 1, true )&lt;br /&gt;
    local result = 0;&lt;br /&gt;
    &lt;br /&gt;
    if exponent_pos ~= nil then&lt;br /&gt;
        local exponent = string.sub( x, exponent_pos + 1 )&lt;br /&gt;
        x = string.sub( x, 1, exponent_pos - 1 )&lt;br /&gt;
        result = result - tonumber( exponent )&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    if decimal ~= nil then&lt;br /&gt;
        result = result + string.len( x ) - decimal&lt;br /&gt;
        return result&lt;br /&gt;
    end&lt;br /&gt;
        &lt;br /&gt;
    local pos = string.len( x );&lt;br /&gt;
    while x:byte(pos) == string.byte(&amp;#039;0&amp;#039;) do&lt;br /&gt;
        pos = pos - 1&lt;br /&gt;
        result = result - 1&lt;br /&gt;
        if pos &amp;lt;= 0 then&lt;br /&gt;
            return 0&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
max&lt;br /&gt;
&lt;br /&gt;
Busca el argumento máximo&lt;br /&gt;
&lt;br /&gt;
Uso:&lt;br /&gt;
    {{#invoke:Math| max | &amp;lt;valor1&amp;gt; | &amp;lt;valor2&amp;gt; | ... }}&lt;br /&gt;
o&lt;br /&gt;
    {{#invoke:Math| max }}&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza sin argumentos, toma su entrada del marco superior. &lt;br /&gt;
Tenga en cuenta que todos los valores que no se evalúan como números son ignorados.&lt;br /&gt;
]]&lt;br /&gt;
function z.max( frame )&lt;br /&gt;
    local args = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if args[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        args = parent.args;&lt;br /&gt;
    end&lt;br /&gt;
    local max_value = nil;&lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while args[i] ~= nil do&lt;br /&gt;
        local val = z._cleanNumber( frame, args[i] );&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            if max_value == nil or val &amp;gt; max_value then&lt;br /&gt;
                max_value = val;&lt;br /&gt;
            end&lt;br /&gt;
        end        &lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return max_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
min &lt;br /&gt;
&lt;br /&gt;
Busca el argumento mínimo&lt;br /&gt;
&lt;br /&gt;
Uso:&lt;br /&gt;
    {{#invoke:Math| min | &amp;lt;valor1&amp;gt; | &amp;lt;valor2&amp;gt; | ... }}&lt;br /&gt;
o&lt;br /&gt;
    {{#invoke:Math| min }}&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza sin argumentos, toma su entrada del marco superior. &lt;br /&gt;
Tenga en cuenta que todos los valores que no se evalúan como números son ignorados&lt;br /&gt;
]]&lt;br /&gt;
function z.min( frame )&lt;br /&gt;
    local args = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if args[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        args = parent.args;&lt;br /&gt;
    end&lt;br /&gt;
    local min_value = nil;&lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while args[i] ~= nil do&lt;br /&gt;
        local val = z._cleanNumber( frame, args[i] );&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            if min_value == nil or val &amp;lt; min_value then&lt;br /&gt;
                min_value = val;&lt;br /&gt;
            end&lt;br /&gt;
        end        &lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return min_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Función que cuenta el número de parámetros informados&lt;br /&gt;
function z.cuenta( frame )&lt;br /&gt;
    local resultado = 0;&lt;br /&gt;
    local Argumentos = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if Argumentos[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        Argumentos = parent.args;&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while Argumentos[i] ~= nil do&lt;br /&gt;
      if Argumentos[i] ~= &amp;#039;&amp;#039; then 	&lt;br /&gt;
    	resultado = resultado + 1&lt;br /&gt;
	  end&lt;br /&gt;
	  &lt;br /&gt;
	  i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return resultado&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Función que suma los parámetros&lt;br /&gt;
function z.suma( frame )&lt;br /&gt;
    local resultado = 0;&lt;br /&gt;
    local Argumentos = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if Argumentos[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        Argumentos = parent.args;&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while Argumentos[i] ~= nil do&lt;br /&gt;
      if Argumentos[i] ~= &amp;#039;&amp;#039; then 	&lt;br /&gt;
    	resultado = resultado +  Argumentos[i]&lt;br /&gt;
	  end&lt;br /&gt;
	  &lt;br /&gt;
	  i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return resultado&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
round&lt;br /&gt;
&lt;br /&gt;
Redondea un número a la precisión especificada&lt;br /&gt;
&lt;br /&gt;
Uso:&lt;br /&gt;
    {{#invoke:Math | round | &amp;lt;valor&amp;gt; | &amp;lt;precisión&amp;gt; }}&lt;br /&gt;
    &lt;br /&gt;
--]]&lt;br /&gt;
function z.round(frame)&lt;br /&gt;
    local value, precision;&lt;br /&gt;
    &lt;br /&gt;
    value = z._cleanNumber( frame, frame.args[1] or frame.args.value or 0 );&lt;br /&gt;
    precision = z._cleanNumber( frame, frame.args[2] or frame.args.precision or 0 );&lt;br /&gt;
    &lt;br /&gt;
    if value == nil or precision == nil then&lt;br /&gt;
        return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;small&amp;gt;Error de formato: Los valores han de ser numéricos&amp;lt;/small&amp;gt;&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._round( value, precision );&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._round( value, precision )&lt;br /&gt;
    local rescale = math.pow( 10, precision );&lt;br /&gt;
    return math.floor( value * rescale + 0.5 ) / rescale;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision_format&lt;br /&gt;
&lt;br /&gt;
Redondea un número a la precisión especificada y le da formato de acuerdo con las normas&lt;br /&gt;
originalmente utilizado para {{Plantilla: Rnd}}. La salida es una cadena.&lt;br /&gt;
Uso:&lt;br /&gt;
    {{#invoke: Math | precision_format | &amp;lt;número&amp;gt; | &amp;lt;precisión&amp;gt; }}&lt;br /&gt;
]]&lt;br /&gt;
function z.precision_format( frame )&lt;br /&gt;
    -- Para acceder a Mediawiki incorporando formateador.&lt;br /&gt;
    local lang = mw.getContentLanguage();&lt;br /&gt;
    &lt;br /&gt;
    local value_string, value, precision;&lt;br /&gt;
    value, value_string = z._cleanNumber( frame, frame.args[1] or 0 );&lt;br /&gt;
    precision = z._cleanNumber( frame, frame.args[2] or 0 );&lt;br /&gt;
    &lt;br /&gt;
    -- Comprueba una entrada no numérica&lt;br /&gt;
    if value == nil or precision == nil then&lt;br /&gt;
        return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;small&amp;gt;Error de formato: Datos no válidos para redondear&amp;lt;/small&amp;gt;&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local current_precision = z._precision( value );&lt;br /&gt;
&lt;br /&gt;
    local order = z._order( value );&lt;br /&gt;
    &lt;br /&gt;
    -- Debido a los efectos de redondeo, es necesario limitar la precisión devuelta bajo&lt;br /&gt;
    -- algunas circunstancias, debido a que sobre los dígitos terminales se informó incorrectamente.&lt;br /&gt;
    if order + precision &amp;gt;= 14 then&lt;br /&gt;
        orig_precision = z._precision( value_string );&lt;br /&gt;
        if order + orig_precision &amp;gt;= 14 then&lt;br /&gt;
            precision = 13 - order;        &lt;br /&gt;
        end        &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Si el redondeo, trunca dígitos adicionales&lt;br /&gt;
    if precision &amp;lt; current_precision then&lt;br /&gt;
        value = z._round( value, precision );&lt;br /&gt;
        current_precision = z._precision( value );&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    local formatted_num = lang:formatNum( math.abs(value) );&lt;br /&gt;
    local sign;&lt;br /&gt;
    &lt;br /&gt;
    -- Utiliza el signo menos unario apropiado antes que el ASCII por defecto&lt;br /&gt;
    if value &amp;lt; 0 then&lt;br /&gt;
        sign = &amp;#039;−&amp;#039;;&lt;br /&gt;
    else&lt;br /&gt;
        sign = &amp;#039;&amp;#039;;&lt;br /&gt;
    end    &lt;br /&gt;
        &lt;br /&gt;
    -- Manejar los casos que requieren la notación científica&lt;br /&gt;
    if string.find( formatted_num, &amp;#039;E&amp;#039;, 1, true ) ~= nil or math.abs(order) &amp;gt;= 9 then&lt;br /&gt;
        value = value * math.pow( 10, -order );&lt;br /&gt;
        current_precision = current_precision + order;&lt;br /&gt;
        precision = precision + order;&lt;br /&gt;
        formatted_num = lang:formatNum( math.abs(value) );&lt;br /&gt;
    else&lt;br /&gt;
        order = 0;        &lt;br /&gt;
    end&lt;br /&gt;
    formatted_num = sign .. formatted_num;&lt;br /&gt;
    &lt;br /&gt;
    -- Pad con ceros si es necesario    &lt;br /&gt;
    if current_precision &amp;lt; precision then&lt;br /&gt;
        local padding;&lt;br /&gt;
        if current_precision &amp;lt;= 0 then&lt;br /&gt;
            if precision &amp;gt; 0 then&lt;br /&gt;
                local zero_sep = lang:formatNum( 1.1 );&lt;br /&gt;
                formatted_num = formatted_num .. zero_sep:sub(2,2);&lt;br /&gt;
&lt;br /&gt;
                padding = precision;&lt;br /&gt;
                if padding &amp;gt; 20 then&lt;br /&gt;
                    padding = 20;&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
                formatted_num = formatted_num .. string.rep( &amp;#039;0&amp;#039;, padding );&lt;br /&gt;
            end            &lt;br /&gt;
        else                   &lt;br /&gt;
            padding = precision - current_precision&lt;br /&gt;
            if padding &amp;gt; 20 then&lt;br /&gt;
                padding = 20;&lt;br /&gt;
            end&lt;br /&gt;
            formatted_num = formatted_num .. string.rep( &amp;#039;0&amp;#039;, padding );&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Añade notación exponencial, si es necesario&lt;br /&gt;
    if order ~= 0 then&lt;br /&gt;
        -- Utiliza el signo menos unario apropiado antes que el ASCII por defecto&lt;br /&gt;
        if order &amp;lt; 0 then&lt;br /&gt;
            order = &amp;#039;−&amp;#039; .. lang:formatNum( math.abs(order) );&lt;br /&gt;
        else&lt;br /&gt;
            order = lang:formatNum( order );&lt;br /&gt;
        end    &lt;br /&gt;
        &lt;br /&gt;
        formatted_num = formatted_num .. &amp;#039;&amp;lt;span style=&amp;quot;margin:0 .15em 0 .25em&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;10&amp;lt;sup&amp;gt;&amp;#039; .. order .. &amp;#039;&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return formatted_num;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Función de ayuda que interpreta la entrada numérica. &lt;br /&gt;
Si la entrada no es un número, lo intenta evaluar como&lt;br /&gt;
un «parser function» (Analizador sintáctico).&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function z._cleanNumber( frame, number_string )&lt;br /&gt;
    if number_string == nil or number_string:len() == 0 then&lt;br /&gt;
        return nil, nil;&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    -- Intenta la conversión básica&lt;br /&gt;
    local number = tonumber( number_string )&lt;br /&gt;
    &lt;br /&gt;
    -- Si falla, trata de evaluar la entrada como expresión&lt;br /&gt;
    if number == nil then        &lt;br /&gt;
        local attempt = frame:preprocess( &amp;#039;{{#expr: &amp;#039; .. number_string .. &amp;#039;}}&amp;#039; );&lt;br /&gt;
        attempt = tonumber( attempt );&lt;br /&gt;
        if attempt ~= nil then&lt;br /&gt;
            number = attempt;&lt;br /&gt;
            number_string = tostring( number );&lt;br /&gt;
        else&lt;br /&gt;
            number = nil;&lt;br /&gt;
            number_string = nil;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
    -- La cadena es válida pero puede contener relleno, límpiela.&lt;br /&gt;
        number_string = number_string:match( &amp;quot;^%s*(.-)%s*$&amp;quot; );&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return number, number_string;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return z&lt;/div&gt;</summary>
		<author><name>es__&gt;LuchoCR</name></author>
	</entry>
</feed>