假设我们有12.054,我想将其拆分为三个变量,如$whole_number=12
$numerator=54
和$denominator=1000
。你能帮帮我吗?
答案 0 :(得分:5)
直接的方法 - 不是很学术,但适用于PHP; - ):
$float = 12.054;
$parts = explode('.', (string)$float);
$whole_number = $parts[0];
$numerator = trim($parts[1], '0');
$denominator = pow(10, strlen(rtrim($parts[1], '0')));
可能还需要做一些工作来确保边缘案例也能正常工作(尾随0
s,完全没有小数部分等)。
答案 1 :(得分:3)
根据简单的类型转换,以下内容可帮助您入门。
但是,有很多情况需要考虑:
前/后零。 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);
}
?>
答案 2 :(得分:2)
试试这个
<?
$no = 12.54;
$arr = explode(".", $no);
$full_no = $arr[0].$arr[1];
for($i = 0; $i < strlen($arr[1]); $i++) $denominator = $denominator."0";
$denominator = "1".$denominator;
$numerator = $full_no % $denominator;
$whole_no = $full_no / $denominator;
echo "Denominator = ". $denominator ."<br>";
echo "Numerator = ". $numerator ."<br>";
echo "Whole No = ". (int)$whole_no ."<br>";
?>
输出:
Denominator = 100
Numerator = 54
Whole No = 12
12.054的输出:
Denominator = 1000
Numerator = 54
Whole No = 12
我希望这会对你有帮助..