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(10, strlen($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 % $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";
}
?>