Вот кое-что для начала, основанное на простых преобразованиях типов.
http://codepad.org/7ExBhTMS
Однако, есть много случаев, которые нужно рассмотреть как:*
Предыдущие / завершающие нули.12.0540 (для вас 540/10000 или 54/1000)
Обработка десятичных дробей без дробной части, например.12.00.
$val = 12.054;
print_r(splitter($val));
function splitter($val)
{
$str = (string) $val ;
$splitted = explode(".",$str);
$whole = (integer)$splitted[0] ;
$num = (integer) $splitted[1];
$den = (integer) pow(10,strlen($splitted[1]));
return array('whole' => $whole, 'num' => $num,'den' => $den);
}
?>