Některé programovací jazyky, včetně Javascriptu podporují nekonečno. V JavaScriptu máme build-in číselnou hodnotu pro kladné nekonečno (Infinity) a také záporné nekonečno (-Infinity).
Další způsob, jak můžeme přistoupit k nekonečnu, je prostřednictvím třídy Number
, jak ukazuje následující kód:
Number.POSITIVE_INFINITY); // Infinity
Math.min(); // Infinity
Number.NEGATIVE_INFINITY; // -Infinity
Math.max(); // -Infinity
Použití nekonečna v jazyce může být v některých případech užitečné, například když potřebujeme přiřadit hodnotu, která je větší nebo menší než jiná hodnota v daném kontextu. Jako je hledání minima
const findMinimum = (numbers) => {
let min = Infinity;
for (const n of numbers) {
if (n < min) min = n;
}
return min;
}
Také se hodí když potřebujeme testovat podmínky, které zahrnují hodnoty, které mohou být nekonečné sekce (Operace s nekonečnem).
Ověřování nekonečna
K ověření, zda je hodnota nekonečná slouží funkce isFinite()
.
Tato funkce vrací false, pokud je argument není rovnu Infinity
nebo není číselný.
if (!isFinite(x)) {
console.log("Hodnota je nekonečno");
}
Operace s nekonečnem
Nekonečno je v Javascriptu používané v matematickém smyslu a k reprezentaci matematických výsledků, které vedou k nekonečnu jako jsou asymptoty, nebo výsledek po dělení čísla nulou.
console.log(46 / 0); // Infinity
To může být příjemnější než, když v některých technologích, obvykle dostanete chybovou zprávu oznamující „Nelze dělit nulou“.
Násobení nulou
Pokud násobíme jakékoliv nekonečno nulou, výsledkem bude neplatné číslo (NaN). Například
Infinity * 0 = NaN
Násobení a exponenciální funkce
Pokud náš číselný výsledek překročit rozsah datového typu number
, stává se nekonečným.
isFinite(1.7976931348623157e+308) // true
isFinite(1e309) // false
Co může být poněkud zvláštní je, když počítáme exponenciální funkce s velkými exponenty.
Math.exp(1000) === Infinity // true
Logaritmus nuly
Pokud počítáme logaritmus z nuly, výsledkem bude záporné nekonečno. Například
Math.log(0) = -Infinity
Buďte opatrní když konvertujete nekonečno do JSON
Pokud při práci s daty děláte konverze do JSONu např. používáte JSON.stringify()
k převodu objektu na řetězec JSON, měli byste vědět, jak se zachází s hodnotami Infinity
. Nekonečno je sice platná matematická hodnota, ale nemusí být podporováno všemi nástroji a knihovnami pro práci s JSON.
Všimněte si následujícího příkladu:
let myJSON = {
value1: 6,
value2: 1.7976931348623157e+309
value3: Infinity,
value4: -Infinity,
};
console.log(JSON.stringify(myJSON, null, 2));
dostaneme
"{
'value1': 6,
'value2': null
'value3': null,
'value4': null,
}"
Všimněte si, že původní data v objektu před zřetězením obsahují tři různé nekonečné hodnoty. Nicméně následně, jsou však tyto hodnoty převedeny na hodnotu null. To by se také stalo, pokud by jedna z hodnot byla původně NaN.