Saltar al contenido

¿Cómo convertir un número romano a entero en PHP?

Buscamos en el mundo on line y así regalarte la respuesta a tu duda, en caso de inquietudes puedes dejarnos un comentario y responderemos con gusto, porque estamos para ayudarte.

Solución:

Qué tal esto:

$romans = array(
    'M' => 1000,
    'CM' => 900,
    'D' => 500,
    'CD' => 400,
    'C' => 100,
    'XC' => 90,
    'L' => 50,
    'XL' => 40,
    'X' => 10,
    'IX' => 9,
    'V' => 5,
    'IV' => 4,
    'I' => 1,
);

$roman = 'MMMCMXCIX';
$result = 0;

foreach ($romans as $key => $value) 
    while (strpos($roman, $key) === 0) 
        $result += $value;
        $roman = substr($roman, strlen($key));
    

echo $result;

que debería generar 3999 para el suministro $roman. Parece funcionar para mis pruebas limitadas:

MCMXC = 1990
MM = 2000
MMXI = 2011
MCMLXXV = 1975

Es posible que también desee hacer alguna validación primero 🙂

No estoy seguro de si tienes ZF o no, pero en caso de que lo tengas (o cualquiera de los que estés leyendo esto) aquí está mi fragmento:

$number = new Zend_Measure_Number('MCMLXXV', Zend_Measure_Number::ROMAN);
$number->convertTo (Zend_Measure_Number::DECIMAL);
echo $number->getValue();
  • Zend_Measure_Number en framework.zend.com

Este es el que se me ocurrió, también agregué el control de validez.

class RomanNumber XL

Nos encantaría que puedieras dar recomendación a esta sección si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *