2014-10-18 129 views
0

我在试图获取小数的小数数。我试着遵循简单的代码,但循环永远运行。在while循环条件下is_double函数

$var = 123.456; 
    $fraction_count = 0; 
    echo $var, "<br>"; 
    while (is_double($var)) { 
     $var *= 10; 
     $fraction_count++; 
     echo $var, "<br>"; 
    } 

我是新来的PHP所以,原谅我,如果这是一个愚蠢的问题!

+0

无论如何你的真正意图是什么?你真的想在那里有一个循环? – Ghost 2014-10-18 15:03:07

+2

**我假设**这是因为is_double()检查变量类型,而不是数字格式。由于$ var被初始化为double,所以除非强制转换,否则它将永远不会成为int。 – Zero 2014-10-18 15:05:45

回答

1

浮点数并不是微不足道的(详见manual)。但是你甚至不需要像这样处理数字。

如果你把它作为一个字符串,可以explode().和第二部分使用strlen()得到$fraction_count

$var = 123.456; 
$parts = explode('.', $var); 
$fraction_count = strlen($parts[1]); 

由于PHP不保存数字尾随0 S,这同样适用于123.4560,但一定要输入一个数字,"123.4560"会给你一个错误的结果。