如果你想判断一个浮点数是否是整数值,可以使用以下几种方法:
浮点数如果是整数,那么它的 floor()(向下取整)和 ceil()(向上取整)都应等于自身。
示例代码:
<?php
function isFloatInteger($num) {
if (!is_float($num)) {
return false;
}
return floor($num) == $num;
}
var_dump(isFloatInteger(3.0)); // bool(true)
var_dump(isFloatInteger(3.5)); // bool(false)
var_dump(isFloatInteger(4)); // bool(false) — 4是整数,不是浮点数
?>
这段代码先判断是否是浮点数,接着用 floor() 判断是否是整数值。
你可以把浮点数转成整型,再和原值比较是否相等。
<?php
function isFloatValueInteger($num) {
return is_float($num) && (int)$num == $num;
}
var_dump(isFloatValueInteger(5.0)); // bool(true)
var_dump(isFloatValueInteger(5.1)); // bool(false)
?>
这种方法比较简单直观。
如果变量是字符串类型,也可以用正则表达式判断是否是浮点表示的整数。
<?php
function isFloatStringInteger($str) {
return preg_match('/^-?\d+\.0+$/', $str) === 1;
}
var_dump(isFloatStringInteger("3.0")); // bool(true)
var_dump(isFloatStringInteger("3.00")); // bool(true)
var_dump(isFloatStringInteger("3.1")); // bool(false)
?>
这适合处理输入的字符串数据。
is_int() 判断的是变量类型是否为整型,不判断数值本身是否为整数。
浮点数即使数值是整数(如3.0),用 is_int() 判断也会返回 false。
需要判断浮点数是否为整数值时,可以用 floor(), (int) 类型转换,或者正则表达式等方法。
根据实际场景选择合适的方法来避免因类型判断错误导致程序异常。
更多PHP相关内容,可以参考 gitbox.net/php-tutorial。