面试时候遇到的一个问题,写一个程序,输入为10进制的任意一个数字和要转换的进制,输出转换后的结果
function hexConversionWhole ($num,$system, $return = ''){
if($num < $system ) return $num . $return ;
return hexConversionWhole(intval($num/$system) , $system ,$num%$system) . $return;
}
function hexConversionDecimal ($num , $system , $return = '' , $maxLen = 5){
if($num == 0 || strlen($return) > $maxLen) return $return ;
return hexConversionDecimal($num*$system - floor($num*$system) , $system , $return . (string)(floor($num*$system)>=1 ? floor($num*$system) : 0) ) ;
}
function hexConversion($num , $system){
$num = intval($num);
$system = intval($system);
if($num > 0 && $system > 0 ){
echo (string) hexConversionWhole(floor($num),$system) . '.' . (string)hexConversionDecimal($num - floor($num),$system) ;
}
}
#主函数为hexConversion
#param int $num = 要转换的10进制数字
#param int $system = 要转换的进制
#return string $return 转换结果
echo hexConversion(3.13,5);