如何在PHP中拆分浮点数?

时间:2011-06-29 09:29:23

标签: php math numbers

假设我们有12.054,我想将其拆分为三个变量,如$whole_number=12 $numerator=54$denominator=1000。你能帮帮我吗?

3 个答案:

答案 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)

根据简单的类型转换,以下内容可帮助您入门。

http://codepad.org/7ExBhTMS

但是,有很多情况需要考虑:

  1. 前/后零。 12.0540(540/10000或54/1000为你)

  2. 处理没有小数部分的小数,例如。 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

我希望这会对你有帮助..