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()