Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/09/2008, 18:05
Juan_Bautista
 
Fecha de Ingreso: septiembre-2008
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: decimales a quebrados ???????

Hola,

Para expresar un número decimal en forma de quebrado hay que hallar su fracción generatriz y luego simplificar esta dividiendo numerador y denominador por el máximo común divisor. El máximo común divisor lo obtenemos por el algoritmo de Euclices.

dec2Frac.php

Código PHP:
<?php
class dec2Frac{

    public function 
__construct($flotante){
        
$this->fracGenSimplicada($flotante);
      }

    private function 
fracGenSimplicada($flotante){
        
//---Fracción Generatriz---
        
$parte_decimal substr($flotante,strpos($flotante,'.')+1);
        
$denominador pow(10strlen($parte_decimal));
        
$numerador $flotante*$denominador;
        
//---Simplica Fracción---
        
$MaxComDiv $this->maxComDiv($numerador,$denominador);
        
$numerador=$numerador/$MaxComDiv;
        
$denominador=$denominador/$MaxComDiv;
        echo 
$numerador.'/'.$denominador;
    }
    
    private function 
maxComDiv($numerador,$denominador){
        
//---Máximo Común Divisor (Euclides)---
        
if($denominador == 0){
            return 
$numerador;        
        }
        while(
$denominador != 0){
            
$resto $numerador &#37; $denominador;
            
$numerador=$denominador;
            
$denominador=$resto;
        }
        return 
$numerador;
    }
}
//fin clase
?>
.... para probarlo:

Código PHP:
<?php
include("dec2Frac.php");
$num=0.5;
if(
is_float($num)){
    new 
dec2Frac($num);
}
else
{
    echo 
"No es flotante";
}
?>

Última edición por jam1138; 15/09/2008 a las 14:44