如果你想判斷一個浮點數是否是整數值,可以使用以下幾種方法:
浮點數如果是整數,那麼它的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 。