Javascript náhodné celé číslo v rozsahu. Spravováno náhodně v JavaScriptu. Zaokrouhlování desetinných čísel

Existuje několik příkladů:

/** * Vrátí náhodné číslo mezi min (včetně) a max (exkluzivní) */ funkce getRandomArbitrary(min, max) ( return Math.random() * (max - min) + min; ) /** * Vrátí a náhodné celé číslo mezi min (včetně) a max (včetně). * Hodnota není nižší než min (nebo další celé číslo větší než min * pokud min není celé číslo) a není větší než max (nebo další celé číslo * nižší než max, pokud max není celé číslo). * Použití Math.round() vám poskytne nejednotnou distribuci! */ funkce getRandomInt(min, max) ( min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; )

Tady je za tím logika. Je to jednoduché pravidlo tří:

Math.random() vrací Číslo mezi 0 (včetně) a 1 (exkluzivní). Máme tedy tento interval:

Pak je vaše odpověď patro n * 10, a pokud potřebujete, vaše odpověď je patro n * 100 atd.

Nyní zadejte svou roli:

Požadovali jste čísla mezi určitý rozsah. (V tomto případě jste v tomto rozsahu zaujatí. - Vezmete-li číslo z , hodíte kostkou, posunete se směrem k , ale stále se jedná o náhodný případ pouze tehdy, když je smrt nezaujatá.)

Uvažujme tedy váš rozsah == > počet prvků rozsahu = 247 - 78 + 1 = 170; (protože jsou zahrnuty obě hranice.

/*Mpůsob 1:*/ var i = 78, j = 247, k = 170, a =, b =, c, d, e, f, l = 0; for(; i 20) ( bool = pravda; ) else ( bool = nepravda; ) ) návratové číslo; )

Zde je MS DotNet implementující náhodnou třídu v javascriptu -

Var Random = (funkce () ( function Random(Seed) ( if (!Seed) ( Seed = this.miliseconds(); ) this.SeedArray = ; for (var i = 0; i< 56; i++) this.SeedArray.push(0); var num = (Seed == -2147483648) ? 2147483647: Math.abs(Seed); var num2 = 161803398 - num; this.SeedArray = num2; var num3 = 1; for (var i_1 = 1; i_1 < 55; i_1++) { var num4 = 21 * i_1 % 55; this.SeedArray = num3; num3 = num2 - num3; if (num3 < 0) { num3 += 2147483647; } num2 = this.SeedArray; } for (var j = 1; j < 5; j++) { for (var k = 1; k < 56; k++) { this.SeedArray[k] -= this.SeedArray; if (this.SeedArray[k] < 0) { this.SeedArray[k] += 2147483647; } } } this.inext = 0; this.inextp = 21; Seed = 1; } Random.prototype.milliseconds = function () { var str = new Date().valueOf().toString(); return parseInt(str.substr(str.length - 6)); }; Random.prototype.InternalSample = function () { var num = this.inext; var num2 = this.inextp; if (++num >= 56) ( num = 1; ) if (++num2 >= 56) ( num2 = 1; ) var num3 = this.SeedArray - this.SeedArray; if (num3 == 2147483647) ( num3--; ) if (num3< 0) { num3 += 2147483647; } this.SeedArray = num3; this.inext = num; this.inextp = num2; return num3; }; Random.prototype.Sample = function () { return this.InternalSample() * 4.6566128752457969E-10; }; Random.prototype.GetSampleForLargeRange = function () { var num = this.InternalSample(); var flag = this.InternalSample() % 2 == 0; if (flag) { num = -num; } var num2 = num; num2 += 2147483646.0; return num2 / 4294967293.0; }; Random.prototype.Next = function (minValue, maxValue) { if (!minValue && !maxValue) return this.InternalSample(); var num = maxValue - minValue; if (num = 0) { gen_num = parseInt((Math.random() * (max-min+1)) + min); } else { random_number.push(gen_num); is_exist = -2; } } while (is_exist >-1); ) document.getElementById("box").innerHTML = náhodné_číslo; )

Chcete-li získat náhodné číslo, řekněme mezi 1 a 6, nejprve proveďte:

0,5 + (Math.random() * ((6 - 1) + 1))

Tím se náhodné číslo vynásobí 6 a pak se k němu přidá 0,5. Poté zaokrouhlite číslo na kladné celé číslo takto:

Math.round(0,5 + (Math.random() * ((6 - 1) + 1))

Tím se číslo zaokrouhlí na nejbližší celé číslo.

Nebo aby to bylo jasnější, udělejte toto:

Hodnota var = 0,5 + (Math.random() * ((6 - 1) + 1)) var roll = Math.round(hodnota); zpětný válec;

V obecný případ kód pro to pomocí proměnných:

Var value = (Min - 0,5) + (Math.random() * ((Max - Min) + 1)) var roll = Math.round(value); zpětný válec;

Důvod odečíst 0,5 od minimální hodnota je, že použití pouze minimální hodnoty vám umožní získat celé číslo, které by bylo větší než vaše maximální hodnota. Odebráním 0,5 z minimální hodnoty v podstatě zabráníte zaokrouhlení maximální hodnoty.

Snad to pomůže.

Náhodné celé číslo mezi nejnižší a nejvyšší:

Funkce randomRange(l,h)( var range = (h-l); var random = Math.floor(Math.random()*range); if (random === 0)(random+=1;) return l+random; )

Ne nejelegantnější řešení.. ale něco rychlého.

Zde používám ke generování náhodných čísel.

Funkce random(high,low) ( high++; return Math.floor((Math.random())*(high-low))+low; )

High++ děláme, protože Math.random() generuje náhodné číslo mezi 0 (včetně) a 1 (exkluzivní). Eliminovaný znamená, že musíme zvýšit maximum o jednu, než budeme počítat. Potom odečteme nízkou hodnotu od vysoké hodnoty, což nám dává největší počet pro generaci - nízká, pak + nízká, což vede k návratu k normální stav a činí nejmenší číslo alespoň nízké. pak vrátíme výsledné číslo

random(7,3) může vrátit 3,4,5,6 nebo 7

/* za předpokladu, že window.crypto.getRandomValues ​​​​je k dispozici, skutečný rozsah by byl od 0 do 1 998 místo 0 až 2 000. Vysvětlení naleznete v dokumentaci javascriptu https://developer.mozilla.org/en-US/docs/Web/ API/ RandomSource/getRandomValues ​​​​*/ var array = new Uint8Array(2); window.crypto.getRandomValues(pole); console.log(pole + pole);

Uint8Array vytvoří pole vyplněné až třemi číslicemi, které nesmí být větší než 999. Tento kód je velmi krátký.

Funkce getRandomInt(lower, upper) ( //pro vytvoření rovnoměrného rozložení vzorků return Math.floor(lower + (Math.random() * (horní - dolní + 1))); //pro vytvoření nerovnoměrného rozložení vzorků // return Math.round(lower + (Math.random() * (upper - lower)) //pro vyloučení maximální hodnoty z možných hodnot //return Math.floor(lower + (Math.random())); * ( horní - dolní)));

Chcete-li tuto funkci a varianty této funkce otestovat, uložte níže uvedený HTML/JavaScript do souboru a otevřete jej v prohlížeči. Kód zobrazí graf znázorňující rozložení jednoho milionu volání funkcí. Kód také zaznamená okrajové případy, takže pokud funkce vytvoří hodnotu větší než max nebo menší než min, budete.vědět.

function getRandomInt(lower, upper) ( //pro vytvoření rovnoměrného rozložení vzorků return Math.floor(lower + (Math.random() * (horní - dolní + 1))); //pro vytvoření nerovnoměrného rozložení vzorků // return Math.round(lower + (Math.random() * (upper - lower)) //pro vyloučení maximální hodnoty z možných hodnot //return Math.floor(lower + (Math.random())); * (horní - dolní))); var min = -5; var max = 5; var pole = new Array(); for(var i = 0; funkce i 2012 isEmpty(value)( return (typeof value === "undefined)" || value === null); } var numSeq = new Array(); function add(num,seq){ var toAdd = new Object(); toAdd.num = num; toAdd.seq = seq; numSeq = toAdd; } function fillNumSeq (num,seq){ var n; for(i=0;i 0.020000000000000004 0.3 - 0.1 > 0.19999999999999998 !}
Pro praktické účely tato nepřesnost nevadí, v našem případě se bavíme o chybě v kvintilionu dílů, nicméně to může někoho zklamat. Poněkud podivné výsledky můžeme získat také při práci s čísly, která představují měny, procenta nebo velikosti souborů. Abychom tyto nepřesnosti opravili, potřebujeme umět výsledky zaokrouhlit a stačí nastavit desetinnou přesnost.

Zaokrouhlování čísel má praktické využití, můžeme manipulovat s číslem v určitém rozsahu, například chceme zaokrouhlit hodnotu na nejbližší celé číslo a ne pracovat pouze s desetinná část.

Zaokrouhlování desetinná čísla Chcete-li oříznout desetinné číslo, použijte metodu toFixed nebo toPrecision. Oba berou jeden argument, který určuje, respektive kolik významné postavy(tj. celkový počet číslic použitých v čísle) nebo desetinná místa (číslo za desetinnou čárkou) musí obsahovat výsledek:
  • Pokud argument není pro toFixed() definován, bude implicitně nula, což znamená, že argument má 0 desetinných míst maximální hodnota, rovno 20.
  • Pokud parametru toPrecision není zadán žádný argument, číslo zůstane nedotčeno
  • nechť randNum = 6,25; randNum.toFixed(); > "6" Math.PI.toPrecision(1); > "3" randNum = 87,335; randNum.toFixed(2); > "87,33" randNum = 87,337; randNum.toPrecision(3); > "87,3"
    Metody toFixed() i toPrecision() vracejí řetězcovou reprezentaci výsledku, nikoli číslo. To znamená, že při sečtení zaokrouhlené hodnoty s randNum vznikne zřetězení řetězců spíše než součet čísel:

    Nechť randNum = 6,25; let rounded = randNum.toFixed(); // "6" console.log(randNum + rounded); > "6,256"
    Pokud chcete, aby byl výsledek číselný typ data, pak budete muset použít parseFloat:

    Nechť randNum = 6,25; let rounded = parseFloat(randNum.toFixed(1)); console.log(zaoblene); > 6.3
    Vezměte prosím na vědomí, že hodnoty 5 jsou zaokrouhleny kromě vzácných případů.

    Metody toFixed() a toPrecision() jsou užitečné, protože mohou nejen ořezávat zlomková část, ale také přidat desetinná místa, což je výhodné při práci s měnou:

    Nechť celéČíslo = 1 nechť dolaryCenty = celéČíslo.toFixed(2); console.log(dollarsCents); > "1,00"
    Všimněte si, že toPrecision vytvoří výsledek ve vědeckém zápisu, pokud je počet celých čísel větší než samotná přesnost:

    Nechť num = 123,435 num.toPrecision(2); > "1,2e+2"

    Jak se vyhnout chybám při zaokrouhlování s desetinnými místy V některých případech toFixed a toPrecision zaokrouhlí hodnotu 5 dolů a nahoru:

    Nechť numTest = 1,005; numTest.toFixed(2); > "1,00"
    Výsledek výše uvedeného výpočtu by měl být 1,01, nikoli 1. Pokud se chcete vyhnout podobná chyba, můžeme použít řešení navržené Jackem L Moorem, které používá k výpočtu exponenciální čísla:

    Funkce round(hodnota, desetinná místa) ( return Number(Math.round(hodnota+"e"+desetinná)+"e-"+desetinná čísla); )
    Nyní:

    kolo(1,005,2); > 1,01
    Pokud chcete robustnější řešení, než je to uvedené výše, můžete přejít na MDN.

    Strojové epsilonové zaokrouhlování V ES6 byla zavedena alternativní metoda pro zaokrouhlování desetinných čísel. Strojové zaokrouhlení epsilon poskytuje přiměřenou míru chyb při porovnávání dvou čísel s plovoucí desetinnou čárkou. Bez zaokrouhlení mohou srovnání přinést výsledky podobné následujícím:

    0,1 + 0,2 === 0,3 > nepravda
    V naší funkci používáme Math.EPSILON, abychom získali platné srovnání:

    Funkce epsEqu(x, y) ( return Math.abs(x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
    Funkce má dva argumenty: první je aktuální výpočet, druhý je očekávaný výsledek. Vrátí srovnání těchto dvou:

    EpsEqu(0,1 + 0,2, 0,3) > pravda
    Všechny moderní prohlížeče již ES6 podporují matematické funkce ale pokud chcete podporu v prohlížečích jako IE 11, použijte polyfills.

    Odříznutí zlomkové části Všechny výše uvedené metody lze zaokrouhlit na desetinná čísla. Chcete-li jednoduše snížit číslo na dvě desetinná místa, musíte je nejprve vynásobit 100 a poté vydělit výsledný výsledek 100:

    Funkce truncated(num) ( return Math.trunc(num * 100) / 100; ) truncated(3.1416) > 3.14
    Pokud chcete metodu přizpůsobit libovolnému počtu desetinných míst, můžete použít bitovou dvojitou negaci:

    Funkce truncated(num, decimalPlaces) (let numPowerConverter = Math.pow(10, decimalPlaces); return ~~(num * numPowerConverter)/numPowerConverter; )
    Nyní:

    Nechť randInt = 35,874993; truncated(randInt,3); > 35,874

    Zaokrouhlení na nejbližší číslo Chcete-li zaokrouhlit desetinné číslo na nejbližší číslo nahoru nebo dolů, podle toho, k čemu jsme nejblíže, použijte Math.round():

    Math.kolo(4.3) > 4 Math.kolo(4.5) > 5
    Všimněte si, že "poloviční hodnota", 0,5 je zaokrouhleno na velká strana podle pravidel matematiky.

    Zaokrouhlení dolů na nejbližší celé číslo Pokud chcete vždy zaokrouhlit dolů, použijte Math.floor:

    Math.floor(42,23); > 42 Mate.podla(36,93); > 36
    Upozorňujeme, že zaokrouhlení dolů funguje pro všechna čísla, včetně záporných čísel. Představte si mrakodrap s nekonečným počtem pater, včetně pater na spodní úrovni (představující záporná čísla). Pokud jste ve výtahu nižší úroveň mezi 2 a 3 (což představuje hodnotu -2,5), Math.floor vás přenese na -3:

    Math.floor(-2,5); > -3
    Pokud se ale této situaci chcete vyhnout, použijte Math.trunc , který je podporován ve všech moderní prohlížeče(kromě IE/Edge):

    Math.trunc(-41,43); > -41
    Na MDN najdete polyfill, který bude poskytovat podporu pro Math.trunc v prohlížečích a IE/Edge.

    Zaokrouhlení nahoru na nejbližší celé číslo Na druhou stranu, pokud potřebujete vždy zaokrouhlit nahoru, použijte Math.ceil. Znovu si pamatujte nekonečný výtah: Math.ceil vždy půjde „nahoru“, bez ohledu na to, zda je číslo záporné nebo ne:

    Math.ceil(42,23); > 43 Math.ceil(36,93); > 37 Math.ceil(-36,93); > -36

    Zaokrouhlení nahoru/dolů na potřebné číslo Pokud chceme zaokrouhlit na nejbližší násobek 5, nejjednodušší je vytvořit funkci, která číslo vydělí 5, zaokrouhlí a poté vynásobí stejnou hodnotou:

    Funkce roundTo5(num) ( return Math.round(num/5)*5; )
    Nyní:

    RoundTo5(11); > 10
    Pokud chcete zaokrouhlit na násobky vaší hodnoty, použijeme více obecná funkce, předáním počáteční hodnoty a násobku do ní:

    Funkce roundToMultiple(počet, násobek) ( return Math.round(num/násobek)*násobek; )
    Nyní:

    Nechť initialNumber = 11; nechť násobek = 10; roundToMultiple(počátečníNumber, násobek); > 10;

    Stanovení čísla v rozsahu Existuje mnoho případů, kdy chceme získat hodnotu x, která leží v rozsahu. Například bychom mohli potřebovat hodnotu mezi 1 a 100, ale skončili jsme s hodnotou 123. Abychom to napravili, můžeme použít min (vrátí nejmenší ze sady čísel) a max (vrátí největší ze sady čísel čísel). V našem příkladu je rozsah od 1 do 100:

    Nechť lowBound = 1; nech highBound = 100; nechť numInput = 123; nechat upnuté = Math.max(dolní hranice, Math.min(numInput, highBound)); console.log(upnutý); > 100;
    Opět můžeme operaci znovu použít a celou věc zabalit do funkce pomocí řešení navrženého Danielem X. Mooreem:

    Number.prototype.clamp = function(min, max) ( return Math.min(Math.max(this, min), max); );
    Nyní:

    NumInput.clamp(lowBound, highBound); > 100;

    Gaussovské zaokrouhlování Gaussovské zaokrouhlování, známé také jako bankéřské zaokrouhlování, zahrnuje zaokrouhlování na nejbližší sudé číslo. Tato metoda zaokrouhlování funguje bez statistické chyby. Nejlepší rozhodnutí navrhl Tim Down:

    Funkce gaussRound(číslo, desetinná místa) ( nechť d = desetinná místa || 0, m = Math.pow(10, d), n = +(d ? num * m: num).toFixed(8), i = Math.floor (n), f = n - i, e = 1e-8, r = (f > 0,5 - e && f< 0.5 + e) ? ((i % 2 == 0) ? i: i + 1) : Math.round(n); return d ? r / m: r; }
    Nyní:

    GaussRound(2.5) > 2 gaussRound(3.5) > 4 gaussRound(2.57,1) > 2.6
    Desetinné v CSS:

    Vzhledem k tomu, že JavaScript se často používá k vytváření pozičních mapování pro prvky HTML, možná vás zajímá, co by se stalo, kdybychom pro naše prvky vygenerovali desetinné hodnoty:

    #box ( šířka: 63,667731993px; )
    Dobrou zprávou je, že moderní prohlížeče budou respektovat desetinné hodnoty v blokový model, včetně jednotek procent nebo pixelů.

    Třídění Velmi často potřebujeme seřadit některé prvky, například máme řadu herních záznamů a ty musí být uspořádány v sestupném pořadí podle hráčské hodnosti. Bohužel, standardní metoda sort() má některá překvapivá omezení: funguje dobře s často používanými v anglických slovech, ale okamžitě se rozpadne, když narazíte na čísla, jedinečné znaky nebo velká slova. Seřazeno podle abecední pořadí Zdá se, že řazení pole podle abecedy by mělo být jednoduchým úkolem:

    Nechte ovoce = ["máslová dýně", "meruňka", "cantaloupe"]; ovoce.sort(); > "meruňka", "máslová dýně", "cantaloupe"]
    Jakmile je však jeden z prvků velkými písmeny, narazíme na problém:

    Nechte ovoce = ["butternut squash", "meruňka", "Cantalope"]; ovoce.sort(); > "Cantaloupe", "meruňka", "máslová dýně"]
    Je to proto, že ve výchozím nastavení třídič porovnává první znak reprezentovaný v Unicode. Unicode je unikátní kód pro jakýkoli symbol, bez ohledu na platformu, bez ohledu na program, bez ohledu na jazyk. Pokud se například podíváte na tabulku kódů, znak „a“ má hodnotu U+0061 (in hexadecimální soustava 0x61), zatímco znak "C" má kód U+0043 (0x43), který je v tabulce Unicode dříve než znak "a".

    Abychom seřadili pole, které může obsahovat smíšená první písmena velkých a malých písmen, musíme buď dočasně převést všechny prvky na malá písmena nebo definujte vlastní pořadí řazení pomocí metody localeCompare() s některými argumenty. Zpravidla je pro takový případ lepší okamžitě vytvořit funkci pro opakované použití:

    Funkce alphaSort(arr) ( arr.sort(funkce (a, b) ( return a.localeCompare(b, "en", ("citlivost": "základ")); )); ) nechť ovoce = ["máslová dýně ", "meruňka", "cantaloupe"]; alphaSort(ovoce) >
    Pokud chcete pole seřadit v obráceném abecedním pořadí, jednoduše prohoďte pozice a a b ve funkci:

    Funkce alphaSort(arr) ( arr.sort(funkce (a, b) ( return b.localeCompare(a, "en", ("citlivost": "základ")); )); ) nechť ovoce = ["máslová dýně ", "meruňka", "cantaloupe"]; alphaSort(ovoce) > ["Cantaloupe", "máslová dýně", "meruňka"]
    Zde stojí za zmínku, že localeCompare se používá s argumenty, musíme také pamatovat na to, že je podporováno IE11+, pro starší verze IE jej můžeme použít bez argumentů a malými písmeny:

    Funkce caseSort(arr) ( arr.sort(funkce (a, b) ( return a.toLowerCase().localeCompare(b.toLowerCase()); )); ) nechť ovoce = ["máslová dýně", "meruňka", "Ananasový meloun"]; caseSort(ovoce) > ["meruňka", "máslová dýně", "Cantaloupe"]

    Numerické řazení To vše neplatí pro příklad, o kterém jsme hovořili výše o poli herních záznamů. S nějakým číselná poleřazení funguje perfektně, ale v určitém okamžiku může být výsledek nepředvídatelný:

    Nechat highScores = ; highScores.sort(); >
    Faktem je, že způsob řazení() provádí lexikografické srovnání: což znamená, že čísla budou převedena na řetězec a porovnání budou opět provedena porovnáním prvního znaku tohoto řetězce v pořadí znaků tabulky Unicode. Proto musíme znovu definovat naše pořadí řazení:

    Nechat highScores = ; highScores.sort(funkce(a,b) ( return a - b; )); >
    Opět platí, že chcete-li seřadit čísla v opačném pořadí, prohoďte pozice aab ve funkci.

    Řazení struktury podobné JSON Konečně, pokud máme datovou strukturu podobnou JSON reprezentovanou jako pole herních záznamů:

    Let score = [ ( "name": "Daniel", "score": 21768 ), ( "name": "Michael", "score": 33579 ), ( "name": "Alison", "score": 38395 )];
    V ES6+ můžete používat funkce šipek:

    Scores.sort((a, b) => b.score - a.score));
    Pro starší prohlížeče, které tuto podporu nemají:

    Scores.sort(function(a, b) ( return a.score - b.score ));
    Jak vidíte, řazení v JavaScriptu je poměrně obskurní záležitost, doufám, že tyto příklady nějak usnadní život.

    Práce s mocninnými funkcemi Umocňování je operace původně definovaná jako výsledek opakovaného násobení přirozené číslo sama o sobě, druhá odmocnina z a je číslo, které dává a, když na druhou. Tyto funkce bychom mohli používat neustále Každodenní život v hodinách matematiky, včetně počítání ploch, objemů nebo dokonce fyzikálního modelování.

    V JavaScriptu výkonová funkce představený jako Math.pow(), byl představen v novém standardu ES7 nového operátora umocnění - " * * ".

    Zvýšení na mocninu Chcete-li zvýšit číslo na n-tou mocninu, použijte funkci Math.pow(), kde první argument je číslo, které bude umocněno, druhý argument je exponent:

    Math.pow(3,2) > 9
    Tato forma zápisu znamená 3 na druhou nebo 3 × 3, což vede k výsledku 9. Lze samozřejmě uvést jiný příklad:

    Math.pow(5,3); > 125
    To znamená, že 5 krychlových nebo 5 × 5 × 5 se rovná 125.

    ECMAScript 7 je další Verze JavaScriptu, v zásadě můžeme použít nový navrhovaný operátor umocňování - * *, tato forma zápisu může být popisnější:

    3 ** 2 > 9
    Na tento moment Podpora tohoto operátora je značně omezená, proto se jeho použití nedoporučuje.

    Funkce napájení může být užitečná ve většině různé situace. Jednoduchý příklad pro výpočet počtu sekund za hodinu: Math.pow (60,2).

    Druhá mocnina a krychle Math.sqrt() a Math.cbrt() jsou opakem Math.pow(). Jak si pamatujeme, druhá odmocnina z a je číslo, které dává a, když je na druhou.

    Math.sqrt(9) > 3
    Zároveň je třetí odmocninou a číslo, které dává a, když je zvýšeno na krychli.

    Math.cbrt(125) > 5
    Math.cbrt() byl do specifikace JavaScriptu zaveden teprve nedávno, a je tedy podporován pouze v moderních prohlížečích: Chrome 38+, Firefox a Opera 25+ a Safari 7.1+. Toho si všimnete internet Explorer není na tomto seznamu, ale na MDN najdete polyfill.

    Příklady Samozřejmě můžeme použít neceločíselné hodnoty v jedné z těchto funkcí:

    Math.pow(1,25; 2); > 1,5625 Math.cbrt(56,57) > 3,8387991760286138
    Vezměte prosím na vědomí, že to při použití funguje docela dobře záporné hodnoty argumenty:

    Math.pow(-5,2) > 25 Math.pow(10,-2) > 0,01
    To však nebude fungovat pro druhou odmocninu:

    Math.sqrt(-9) > NaN
    Z matematická analýza víme, že imaginárním číslem rozumíme odmocniny z záporná čísla. A to nás může přivést k další technice práce komplexní čísla, Ale to je jiný příběh.

    K nalezení čtverce a můžete použít zlomkové hodnoty v Math.pow(). krychlové kořenyčísla. Odmocnina používá exponent 0,5:

    Math.pow(5; 0,5); // = Math.sqrt(5) = 5 ** (1/2) > 2,23606797749979
    Kvůli rozmarům s pohyblivou řádovou čárkou však nemůžete přesně odhadnout správný výsledek:

    Math.pow(2,23606797749979,2) > 5,00000000000001
    V takových situacích se budete muset uchýlit k odříznutí znamének od čísla nebo zaokrouhlení na nějakou hodnotu.

    Někteří lidé si z neznámých důvodů v JavaScriptu pletou funkci Math.pow() s Math.exp() , což je exponenciální funkce pro čísla obecně. Poznámka: v anglický jazyk"exponent" se překládá jako "exponent", takže to platí spíše pro anglicky mluvící, i když existují alternativní názvy pro exponent, jako je index, mocnina.

    Matematické konstanty Práci s matematikou v JavaScriptu usnadňuje řada vestavěných konstant. Tyto konstanty jsou vlastnostmi objektu Math. Stojí za zmínku, že konstanty jsou psány velkými písmeny, nikoli zápisem CamelCase.

    Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Vstupte, prosím.

    Štítky:
    • javascript
    • matematika
    Přidat štítky

    
    Horní