is_finite
is_finite($cislo)
Vrátí true, když je desetinné číslo běžné konečné číslo. Pro kladné i záporné nekonečno (INF) a pro NAN vrátí false. Je to nejjednodušší kontrola, že výsledek výpočtu je použitelný.
Parametry
- $cislo – desetinné číslo.
Příklady
var_dump(is_finite(1.5)); // bool(true)
var_dump(is_finite(INF)); // bool(false)
var_dump(is_finite(-INF)); // bool(false)
var_dump(is_finite(NAN)); // bool(false)
// přetečení výpočtu
var_dump(is_finite(exp(710))); // bool(false)
var_dump(is_finite(PHP_FLOAT_MAX * 2)); // bool(false)
// číslo zadané jako text může být mimo rozsah
var_dump(is_numeric("1e400")); // bool(true)
var_dump(is_finite((float) "1e400")); // bool(false)
// kontrola vstupu před výpočtem
$vstup = "12.5";
var_dump(is_numeric($vstup) && is_finite((float) $vstup)); // bool(true)
Na co si dát pozor
- Text „1e400“ je pro is_numeric() platné číslo, ale po převodu je to nekonečno. U číselných vstupů zvenčí proto kontrolujte obojí.
- Funkce čeká desetinné číslo. Celá čísla převede, ta jsou vždy konečná.
- Výsledky jako INF a NAN nejdou převést do JSON ani uložit do běžného číselného sloupce databáze.
- Jen nekonečno pozná is_infinite(), jen NAN is_nan().
Příbuzné funkce:
is_infinite()
is_nan()
is_numeric()