JavaScript ümardades kuni 2 tähemärki. Meetodid Ümardamisnumbrite ümardamine JavaScript

Tere, Lovers JavaScript-a. Te olete juba märganud, et see keel on väga erakordne ja igas osas paistab selle iseärasuste ja ebatavaliste tehniliste lahenduste jaoks välja. Seetõttu on tänapäeva väljaanne pühendatud teemale: JavaScripti ümardamine.

Pärast praeguse artikli lugemist saate teada, miks on vaja ümardada numbrid, milliseid numbreid ja omadusi JS täidab seda funktsiooni, samuti 0. jagunemist, ilma et teie põhimõtteid muutmata, lisan näiteid peamistele punktidele Materjal ja kirjutage iga hagi üksikasjalikult välja. Nüüd hakkame õppima!

Olulised märkused numbrite kohta

Et alustada, pidage meeles, et JS-i igasugustes numbritel (fraktsionaalne ja täisarv) viitavad tüübile Number. Lisaks kõik need on 64-bitine, kuna neid salvestatakse "kahekordse täpsuse" vormingus, mis on tuntud ka IEEE-754 standardi all.

Loodud numbrilised muutujad tavalisel viisil:

var tuim \u003d 35; // loomulik number

vAR Drob \u003d 0,93; // kümnendkujundus

var numb16 \u003d 0xff; // 16-rikkuse süsteem

Toetab muid numbrilisi vaateid. Niisiis saate luua ka ujuva punktiga numbreid (neid mõnikord nimetatakse "teaduslikus vormingus").

Ilus väga huvitava meetodi toetusel tolocalestring ()Mis vormindab kõik numbrilised parameetrid vastavalt spetsifikatsioonidele ECMA 402. Tänu sellele suurele hulgale, telefoninumbritele, valuutadele ja isegi protsendimääradele kuvatakse dialoogiboksis ilusti ilusti.

var num \u003d 714000,80;

hoiatus (num.toolocalestring ());

Töötada tüübi numbri elementidega, kogu globaalse objekti, millel on hulk igasuguseid matemaatilisi funktsioone, kelle nimi Matemaatika..

Lisaks on ka teisi meetodeid, mis täidavad arvulisi väärtusi täisarvudele, kuni kümnendikutele, sajandikutele jne. Mõtle neid veelgi.

Suur ja vägev matemaatika

Global Math objekt sisaldab suur hulk erinevaid matemaatilisi ja trigonomeetrilisi funktsioone. See on väga vajalik objekt ja sageli lõikab arendajad digitaalsete andmetega töötamisel.

Teistel platvormidel on analoogsed matemaatika. Näiteks populaarsete keelte nagu Java ja C #, matemaatika on klass, mis toetab kõiki samu standard funktsioone. Niisiis, nagu näete, et see tööriist on tõesti suur ja võimas.

Nüüd tahan minna ümardamise eest vastutavate konkreetsete meetodite kaudu ja rääkida üksikasjalikult.

Math.floor ()

Ma alustan S. Matemaatika.põrand. Pöörake tähelepanu meetodi nimele. See loogiliselt selgub, et kuna me räägime ümardamisest ja sõna "põranda" sõna otseses tõlge tähendab "põranda", siis see tööriist voorub töödeldud väärtused väiksemaks.

Võimalus on võimalik ka siis, kui töödeldud number selle funktsiooni abil jääb samaks. Kõik, sest ümardamine toimub mitte-neuraalse ebavõrdsuse kohta (<=). Таким образом, при отработке этой строчки кода:

alert (Math.floor (4.5));

vastus on number 4.

Math.ceil ()

Jällegi vaadake nime (sellises meetodis imendub materjal kiiresti). Kui keegi ei tea, tähendab "ülemmäär". See tähendab, et numbriliste andmete ümardamine toimub kõige külge, kasutades mitte-ebavõrdsust (\u003e \u003d).

alert (Math.ceil (4.5));

Nagu te juba arvsite, on vastus number 5.

Math.Round ()

See meetod ringi murdosa arvuga lähima tervikuna. Niisiis, kui fraktsioneeriv osa on vahemikus 0 ja kuni 0,5 mitte kaasava, toimub ümardamine väiksema väärtusega. Ja kui fraktsioneeriv osa on vahemikus kaasavast 0,5-st ja kuni järgmise täisarvuni, ümardatakse see suurema tervikuna.

alert (Math.Round (4.5));

Loodan, et kõik arvasin või rääkis õigele vastusele - 5.

Veel mõned meetodid

JavaScript on ka teisi 2 meetodit, mis tegelevad arvuliste esinduste ümardamisega. Kuid nad on mõnevõrra erinevad.

See on selliste vahendite kohta tofixed () ja topRecision (). Nad vastavad mitte ainult ümardamiseks, vaid selle täpsuse tõttu teatud märke. Võideldame sügavamalt.

tofixed ()

Selle mehhanismiga saate määrata, kui palju märke pärast koma vajab väärtust ümber. Meetod tagastab tulemuse stringi. Allpool olen lisatud võimaluse kolme erineva võimalusega. Analüüsige saadud vastuseid.

var num \u003d 5656,9393;

document.Writeln (num.tofixed ()); // 5657.

document.Writeln (Num.tofix (2)); // 5656.94

document.Writeln (num.tofixed (7)); // 5656.9393000

Nagu on näha, kui te ei täpsusta argumenti, siis tofixed ()) ringi murdosa väärtuse kogu numbrid. Kolmandas liinil lõpetatud ümardamine kuni 2 tähemärkija neljandal - parameetri "7" tõttu on adresseeritud kolm 0.

topRecision ()

See meetod toimib mõnevõrra erinevalt. Argumendi kohas võite lahkuda nii tühja koha ja määrata parameetri. Viimane ümardatakse siiski numbrid enne määratud arvu numbrit, mitte pöörata tähelepanu komadele. Siin on programmi tulemused näites ümber kirjutatud:

var num \u003d 5656,9393;

document.Writeln (num.toprecision ()); // 5656.9393

document.Writeln (num.toprecision (2)); // 5.7e + 3

document.Writeln (num.toprecision (7)); // 5656.939

Divisjoni fail 0 in JS-is

Nagu matemaatika õppetundidest teada, on võimatu jagada nullini. See reegel võeti aluseks enamik programmeerimiskeelte loojatest. Seega, kui jagades , kõik programmid vea.

Kuid JavaScript eristas ennast siin. Niisiis, sellise operatsiooni täitmise ajal ei tekiks veateateid ... sest selline operatsiooni tagastab "Lõpmatus"!

Miks nii? Nagu sama matemaatilistest teadustest tuntud, on väiksem jaotur, tulemus on suurem number. Seetõttu otsustas selle prototüübi orienteeritud keele loojad mallidest loobuda ja oma teed minna.

Neile, kes seisavad kõigepealt silmitsi lõpmatuse väärtusega, selgitasin selle omadusi.

Infinity - tähendab lõpmatu ja täielikult vastab matemaatilise märgiga ∞.

Võib olla negatiivne. Samuti salvestatakse kõik aritmeetiliste ettevõtjatega töötamise standardreeglid.

hoiatus (12/0); Infinity.

alert (12,34 / 0); Infinity.

hoiatus (-3 / 0); // -Infinity.

Selles, võib-olla ja lõpetada. Kui sulle meeldib väljaanne, siis kindlasti tellida minu blogi. Ärge tõsi viidet huvitavaid artikleid ja jagage neid sõpradega. Headaega!



JavaScript-matemaatika, ümardades kuni kahe kümnendkoha täpsusega (9)

Mul on järgmine JavaScripti süntaks:

Var soodushinnaga \u003d mate.round (100 - (hind / loendi) * 100);

See on ümardatud täisarvuni. Kuidas ma saan tulemuse tagastada kahe kümnendmärgiga?

Siin on töönäide

VAR väärtus \u003d 2002365455; Tulemus \u003d Math.Round (väärtus * 100) / 100 // tulemus on 200,24

Töötlemiseks ümardamise mis tahes arvu kümnendkohtade jaoks kõige vajalike vajaduste jaoks, seal on piisavalt funktsiooni 2 koodi liinil. Siin on mängu näide kood.

Varte testnum \u003d 134,9567654; Var declpl \u003d 2; var testitud \u003d ringdek (testum, declpl); Alert (Testnum + "ümardatud" + decl + "kümnendkoha täpsusega koma on" + testitud); Funktsioon ümardedic (NBR, dec_places) (VAR Math \u003d Math.Pow (10, dec_places); tagastage Math.Round (NBR * Mult) / Mult;)

Parim ja lihtne lahendus, mida ma leidsin, on

Funktsiooni ring (tagasivoolu number (matemaatika // 1.01

Väike variatsioon aktsepteeritud vastus. Tofixed (2) tagastab stringi ja saate alati kaks kümnendmärki. See võib olla null. Kui soovite lõpliku nulli (de) maha suruda, siis lihtsalt seda teha:

Var soodushinnaga \u003d + ((hind / loendrice) .tofixed (2));

Redigeeritud: ma lihtsalt leidsin, et tundub Firefoxi 35.0.1.1 viga, mis tähendab, et ülaltoodud võib anda NAN-väärtused.
Ma muutsin oma koodi

Var soodushinnaga \u003d mate.round (hind / loendi * 100) / 100;

See annab numbri kahe kümnendkoha täpsusega. Kui teil on vaja kolm, siis korrutate ja jagate 1000 ja jagage nii edasi.
OP tahab alati kahe kümnendkoha heakskiidu alati, kuid kui tofixed () on Firefoxis katki, peate kõigepealt selle parandama.
Vt https://bugzilla.mozilla.org/show_bug.cgi?id\u003d1134388.

Et saada kahe kümnendmärgiga tulemus, saate teha järgmist:

Var soodushinnaga \u003d mate.Round ((100 - (hind / loendi) * 100) * 100) / 100;

Väärtus, mis tuleb ümardada, korrutatakse kahe esimese numbri salvestamiseks 100-ga, seejärel jagame tegeliku tulemuse saamiseks 100-ni.

Ma arvan, et parim viis, kuidas ma nägin, korrutatakse 10-nda numbrite arvuga, seejärel tehke Math.Round.Round ja seejärel jagage 10 numbrite arvu järgi. Siin on lihtne funktsioon, mida ma kasutan kirjutusmasinate tekstides:

Funktsioon Ringtoxdigits (väärtus: number, numbrid: number) (väärtus \u003d väärtus * Math.Pow (10, numbrit); väärtus \u003d Math.Round (väärtus); väärtus \u003d väärtus / matemaatika) (10, numbrit); tagastamise väärtus; )

Või lihtne JavaScript:

Funktsiooni roundtoxdigits (väärtus, numbrid) (kui (! Numbrit) (numbrid \u003d 2;) väärtus \u003d väärtus * Math.Pow (10, numbrit); väärtus \u003d mate.round (väärtus); väärtus \u003d väärtus / matemaatiline , numbrid); tagastamise väärtus;)

MÄRGE. - Vt Edit 4, kui 3-kohaline täpsus on oluline.

Var soodushinnaga \u003d (hind / loendrice) .tofixed (2);

tofixed on ümardatud üles või alla teile sõltuvalt väärtustest, mis ületavad 2 kümnendmärki.

Muutus. Nagu teised mainitud, teisendab see tingimuse stringi. Selle vältimiseks:

Var soodushinnaga \u003d + ((hind / loendrice) .tofixed (2));

Redigeerimine 2. - Nagu märkustes mainitud, ei teostata seda funktsiooni mõningase täpsusega, näiteks 1,005 puhul tagasi 1,00 asemel 1,0,01. Kui täpsus on sellisel määral oluline, leidsin selle vastuse: HTTPS: //.com/a/32605063/1726511 Mis tundub töötavad hästi kõigi testidega, mida ma proovisin.

Üks väike muudatus nõuab, kuid ülaltoodud vastus tagastab täisarvud, kui see on ümardatud ühe ümardatud, seega naaseb näiteks 99.004 99,00 asemel 99, mis ei ole hinnakujunduse jaoks täiuslik.

Muuda 3. - Tundub, et tofixed tegelikule naasmisele veel väänatud mõned numbrid, see on lõplik redigeerimine tundub töötada. Geez nii palju reparations!

Var soodushinnaga \u003d ümmargune ((hind / loendrice), 2); Funktsioon Ringto (N, numbrid) (kui (numbreid \u003d\u003d\u003d määratlemata) (numbrid \u003d 0;) var mitmekordsed \u003d matemaatika (10, numbrit); n \u003d parsefloat ((n * mitmekordne). varte \u003d (matemaatiline (n) / mitmekordne); tagastamine + (test.tofixed (numbrid));)

Muuda 4. "Sa poisid mind tapavad." Edit 3 ebaõnnestub negatiivsete numbrite, ilma kaevamiseta, miks see on lihtsam teha lihtsalt negatiivne number positiivne enne ümardamise tegemist ja seejärel tagastage see tagasi enne tulemuse tagastamist.

Funktsioon Ringto (N, numbrid) (Var negatiivne \u003d FALSE; IF (numbrid \u003d\u003d\u003d määratlemata) (numbrid \u003d 0;), kui (n< 0) { negative = true; n = n * -1; } var multiplicator = Math.pow(10, digits); n = parseFloat((n * multiplicator).toFixed(11)); n = (Math.round(n) / multiplicator).toFixed(2); if(negative) { n = (n * -1).toFixed(2); } return n; }

Kiireim viis - kiirem kui tofixed ():

Kaks kleebis

x \u003d .123456 Tulemus \u003d Math.Round (x * 100) / 100 // Tulemus .12

Kolm kümnekümmend

X \u003d .123456 Tulemus \u003d Math.Round (x * 1000) / 1000 // Tulemus .123

Funktsioon Ring (Num, DEC) (Num \u003d Math.Round (Num + E "DEC) tagastamisnumber (Num +" E - "+ DEC))) // Ümber oma valiku kümnendkohani: ring (1.3453.2)

Tere. Täna vaatame JavaScripti veerus, kuidas määrata JavaScript-i arv merelaevade arv ujuva punkti numbritega. Näiteks peate esitama 3 kümnendmärgi, kui kuvatakse või ainult kaks.

Ülesanne: semikoolide JavaScript

Niisiis, me seisame silmitsi ülesandega: arvutustest tuleneb arvutustest, kus on semikoolonid ja pärast koma. Koma. Oletame, et tulemus osutus selle 1538.9891200153. Aga kui väljund peaks olema summa, mis peegeldab summat, kus pangatähtede kogus on komaga ja pärast - Kopecks.

Selle ülesande lahendamiseks on mitmeid viise.

Lahendus 1: semikoolonite JavaScript tofixed meetodiga

tofixed on sisseehitatud JavaScripti meetodis, mis rakendatakse mis tahes numbrit, täpsus võtab täpsuse ümardamise (st meresaadete arv).

Var num \u003d 1538,9891200153; Num_Str \u003d Num.Tofixed (); // num_str \u003d 1538; Num_Str \u003d Num.Tofix (2); //Num_Str\u003d1538,98; Num_Str \u003d Num.Tofix (5); //Num_Str\u003d1538.98912;

Selle funktsiooni täpsuse parameeter peaks olema vähemalt 0 (ei võta negatiivseid väärtusi) ja mitte rohkem kui 20.

Võite teha ka ilma muutuja, näiteks sellisena:

Num_Str \u003d (1538,9891200153) .tofix (2); //Num_Str\u003d1538,98;

Lahendus 2: JavaScript-semikoolonide arv koos tipptasemel meetodiga

See lahendus põhineb sama sisseehitatud JavaScripti meetodil. Selle meetodi eristusvõime on see, et sisendile võetud parameeter ei tähenda täpsust (semikoolonete arv), vaid tähemärkide koguarv (nii komaga kui ka pärast seda).

Var num \u003d 1538,9891200153; Num_Str \u003d Num.Toprecision (5); //Num_Str\u003d1538,9; num_str \u003d num.toprecision (7); //Num_Str\u003d1538.989;

Lahendus ilma märkideta pärast koma: JavaScript-semikoolide arv

Kui kümnendmärgid on vaja täielikult kokku volditud, on see, et see on vajalik murdosa numbri ümardamiseks kogu, siis saate kasutada matemaatika funktsioone: ümmargune, lae ja põrand.
Ümar - ümmargused suures või väiksemas osas (sõltuvalt numbrist). Kui väärtus pärast semicolons on üle poole, siis ringi kogu küljele, kui vähem - väiksem. See tähendab, et kui 0,51 - on 1, kui 0,49 - 0.

Ceil - inglise keeles. Lagi ümardatakse alati suurimaks küljeks.

Põrand - inglise keelest. Paul vooru alati väiksemas poolel.

Var num \u003d 1538,9891200153; Num_Str \u003d Math.Round (Num); // num_str \u003d 1539; Num_Str \u003d Math.floor (Num); // num_str \u003d 1538; Num_Str \u003d Math.ceil (Num); // num_str \u003d 1539;

See on kõik. Loodan, et see märkus aitas teil ülesande lahendada. Kui midagi ebaõnnestus - küsige küsimusi rohelise nupu abil "Küsi spetsialisti küsimust" või kommentaarides.

Sageli annavad arvutused tulemusi, mis ei vasta soovitud vahemike piiridele. Selle tulemusena peate kasutama JavaScripti ümardamine teatud väärtuseni.

Miks ümmargused numbrid?

JavaScript ei salvesta täisarvude, kuna nende väärtused on esitatud ujuva punkti numbrite kujul. Paljud fraktsioonid ei saa esindada numbriga teatud piiratud arvu semikoolonitega, nii et JavaScript võib tekitada tulemusi, näiteks järgmist:

0.1 * 0.2; > 0.020000000000000004

Praktikas ei ole see mingit tähtsust, kuna tegemist on 2 Quinylonneiga. Kuid see võib mõjutada tulemust töötavate numbritega, mis esindavad klapi väärtusi, protsenti või faili suurust. Seetõttu peate tegema või kuni teatud kümnendmärgi.

Ümardamine kümnendnumbrid

"Trim" kümnendnumbrisse, tofixed () või topringijee () meetodeid kasutatakse. Nad mõlemad võtavad ühe argumendi, mis määrab pärast komaga märkimisväärsete ja tähiste arvu, mis tuleb kaasata tulemus:

  • kui tofixed () argument ei ole määratletud, vaikeväärtus on 0, mis ei ole märke pärast koma; Argumendi maksimaalne väärtus on 20;
  • kui tipptasemel () ei ole argumenti täpsustatud, ei muutu number.

var randnum \u003d 6,25; Randnum.tofixed (); \u003e "6" Math.pi.Toprecision (1); \u003e "3" var randnum \u003d 87,335; Randnum.tofixed (2); \u003e "87.33" VAR Randnum \u003d 87,337; Randnum.toprecision (3); \u003e 87.3 "

Märge

Ja tofixed () ja toprecision tagastab ümardatud väiketähtede esinduse ja mitte number. See tähendab, et Randnumile viivituse lisamine toob kaasa asustuse stringi ja mitte ühte numbrit:

konsool.log (Randnum + ümar); \u003e "6.256"

Kui teil on vaja saada JavaScripti ümardamise sajandikku, kasutage Parsefloat ():

var randnum \u003d 6,25; var ümardatud \u003d parsefloat (Randnum.tofixed (1)); Konsool.log (ümardatud); \u003e 6.3.

tofixed () ja tipptasemel () on kasulikud meetodid suure hulga semikoolonite kärpimiseks. See on mugav, kui töötavad rahaühikute esindavate numbritega:

vAR WHLENUM \u003d 1 VAR DOLLARDSCE \u003d WHOLENUM.Tofix (2); Konsool.log (Dollarsents); \u003e 1.00 "

Pange tähele, et kui on rohkem märke kui täpsuse parameeter, väljastab TOPRECision tulemuse teadusliku vormi tulemuse:

var num \u003d 123,435 num.toprecision (2); \u003e "1.2e + 2"

Kuidas vältida vigu kümnendate fraktsioonide ümardamisel

Mõnel juhul viiakse läbi tofixed ja toprrecision JavaScript ümardades 5 väiksemale küljele, mitte rohkem:

var arvesti \u003d 1,005; Numtest.tofixed (2); \u003e 1;

Ülaltoodud näite tulemus peaks olema 1,01 ja mitte 1. Kui soovite seda viga vältida, soovitan kasutada eksponentsiaalseid numbreid:

funktsiooniruut (tagastamise number (Math.Round (väärtus + E "+ kümnendkoha) +" e - "+ kümnendkohased);)

Taotlus:

ringi (1.005.2); \u003e 1.01

Kui teil on vaja veelgi usaldusväärsemat lahendust kui ümardamine, on see saadaval MDN..

Ümardamine Epsiloniga

Alternatiivne meetod JavaScript ümardades kuni kümnendikuni võeti kasutusele ES6-s ( tuntud ka kui JavaScript 2015). « Masin Epsilon»Kahe ujuva semikooloni võrdlemisel on mõistlik veapiir. Ümarita, võrdlused võivad anda tulemusi nagu järgmiselt:

0,1 + 0,2 \u003d\u003d\u003d 0.3\u003e FALSE

Math.Epsilon saab funktsioonis kasutada õige võrdluse saamiseks:

funktsioon EpQuEx (x, y) (tagastage Math.abs (x-y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }

Funktsioon võtab kaks argumenti: Üks sisaldab arvutusi, teine \u200b\u200boodatav (ümar) tulemus. See tagastab nende kahe parameetri võrdluse:

epx (0,1 + 0,2, 0,3)\u003e Tõsi

Kõik kaasaegsed brauserid toetavad ES6 matemaatilisi funktsioone. Aga kui teil on vaja pakkuda toetust vanade brauserside, peate kasutama PolyLala.

Kümnendnumbrite kärpimine

Kõik varasemad meetodid JavaScript ümardades kuni kümnendikuni. Positiivse arvu kärpimine kuni kahe koha pärast komaga, korrutada selle 100-ni, taas ja seejärel jagatakse saadud tulemus 100-ga, vajate:

funktsioon kärbitud (Num) (tagastage Math.Trunc (Num * 100) / 100;) kärbitud (3.1416)\u003e 3.14

Kui vajate midagi paindlikumat, võite kasutada purustatud operaatorit:

funktsioon kärbitud (VAR NUMPowerconverter \u003d Math.Pow (10, detsimalplacs); Tagasi ~ ~ (Num * Numpowerconverter) / NumPowerconverter;)

Kasutades:

var randint \u003d 35,874993; Kärbitud (Randint, 3); \u003e 35.874.

Ümardamine lähima arvu juurde

Rakendada JavaScript ümardades kogu, Math.Round () kasutatakse:

Math.Round (4.3)\u003e 4 Math.Round (4.5)\u003e 5

Pange tähele, et " poole väärtused", Näiteks .5, ümardatud.

Ümardamine lähima täisarv

Kui soovite ümardada väiksema poolega, kasutage matemaatika.floor () meetodit:

Math.floor (42.23); \u003e 42 Math.floor (36.93); \u003e 36.

Ümardamine "alla" on kõigi numbrite jaoks üks suund, sealhulgas negatiivseks. Seda saab esindada pilvelõhkujana, kellel on lõpmatu hulk põrandaid, sealhulgas fondi taseme all ( negatiivsete numbrite esindamine). Kui olete lift keldrikorruste põrandate 2 ja 3 vahel ( mis sobib väärtus -2,5), Math.floor annab teid põrandale -3:

Math.floor (-2,5); \u003e -3.

Kui soovite seda vältida, kasutage JavaScripti matemaatika ümardamist Math.trunc () toetatud kõigis kaasaegses brauseris (va IE / EDGE.):

Math.trunc (-41,43); \u003e -41

MDN pakub ka ka kolme liini Polüül, et pakkuda matemaatikat..

Ümardamine lähima täisarvuni

Kui soovite ümardada kümnendnumbrid, kasutage matemaatikat.Ceil. Selle meetodi meedet võib esindada ka lõputu lifti kujul: Math.ceil on alati õnnelik "üles", olenemata sellest, kas number on negatiivne või positiivne:

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

Ümardades lähima mitme numbri juurde

Kui teil on vaja ümardada väärtuse lähimasse numbrile, luua mitu 5, luua funktsioon, mis jagab numbri 5, vooru ja seejärel korrutab tulemuse sama väärtusega:

funktsioon Ringto5 (Num) (tagasi Math.Round (Num / 5) * 5);)

Kasutades:

roundto5 (11); \u003e 10.

Kui soovite täita JavaScripti ümardamist kuni kahe tähemärgiga, saate edastada funktsioonid esialgse numbri ja mitmekesisusena:

funktsioon RoundTomultiple (Num, mitu) (tagastage Math.Round (Num / Mench) * mitu;)

Funktsiooni kasutamiseks lülitage ümardatud number ja mitmekesisus oma kõne:

var õues \u003d 11; var mitu \u003d 10; RoundTomultiple (algnumber, mitu); \u003e 10;

Ümardage väärtused ainult suures või väiksemas suunas, asendage ümmargune funktsioon laes või põrandal.

Vahemikus

Mõnikord peate saama väärtus x, mis peaks olema teatud vahemikus. Näiteks vajate väärtust 1 kuni 100, kuid saame väärtuse 123. Selle parandamiseks saate kasutada min () () () ( tagastab väikseima numbritega) ja max ( tagastab maksimaalse lubatud numbri).

Kasutades:

var lossida \u003d 1; var hobune \u003d 100; var numminput \u003d 123; var kinni \u003d Math.max (lowbound, matemaatika.min (Numberput, Highbound)); Konsool.log (kinnitatud); \u003e 100;

Saate luua funktsiooni või pikendamise klassi numbri.

Väga tihti arvutused JavaScript ei anna päris tulemusi, mida me tahame. Loomulikult saame teha numbritega midagi - ümardamine suures või väiksemas osas, seadistage vahemikud, mittevajalikud numbrid teatud arvu kümnendkohtade arv, see kõik sõltub sellest, mida soovite selle numbriga tulevikus teha.

Miks sa vajad ümardamist?

JavaScripti üks uudishimulikke aspekte on see, et see tegelikult ei salvesta täisarvude, töötame kohe ujuva punkti numbritega. See koos asjaoluga, et paljude fraktsioneerivate väärtuste ei saa väljendada lõpliku arvu kümnendmärgid, saame selliseid tulemusi JavaScript:

0.1 * 0.2; > 0.020000000000000004 0.3 - 0.1 > 0.19999999999999998
Praktilistel eesmärkidel ei ole see ebatäpsus oluline, meie juhtumil räägime veast Quintillioni dollari vigadest, kuid keegi suudab pettuda. Me saame veidi kummalise tulemuse ja töötades numbritega, mis on klapi väärtused, protsendid või faili suurused. Nende ebatäpsuste parandamiseks peame lihtsalt tulemusi ümardama, samas kui piisab kümnendkoha täpsuse loomiseks.

Numbrite ümardamine on praktiline rakendus, saame manipuleerida numbrit teatud vahemikus, näiteks tahame ümardada väärtuse lähima täisarvu ja ei tööta ainult kümnendosaga.

Ümardamine kümnendnumbrid

Kümnendnumbri katkestamiseks kasutage tofixed või tipptasemel meetodit. Mõlemad võetakse vastu ühe argumendiga, mis määrab vastavalt, kui palju sisukaid numbreid (st arvu kasutatavate numbrite koguarvust) või pärast semikooloni (kogus pärast kümnendpunkti) peaks sisaldama tulemust:
  1. Kui argument ei ole määratletud tofixed (), siis vaikimisi on , mis tähendab 0 märki pärast koma, argumendil on maksimaalne väärtus võrdne 20.
  2. Kui argument ei ole täpsustatud, jääb number puutumata
Olgu Randnum \u003d 6.25; Randnum.tofixed (); \u003e "6" Math.pi.Toprecision (1); \u003e "3" Randnum \u003d 87,335; Randnum.tofixed (2); \u003e 87.33 "Randnum \u003d 87,337; Randnum.toprecision (3); \u003e 87.3 "
Mõlemad tofixed () ja toprrecision () meetodid tagastavad tulemuse, mitte numbrile stringi esindamise. See tähendab, et ümara väärtusega Randnumiga väärtuse kokkuvõttes tehakse ridade kontrasenaadi ja mitte numbrite arvu:

Olgu Randnum \u003d 6.25; Lase ümardatud \u003d Randnum.tofix (); // "6" konsool.log (Randnum + ümar); \u003e "6.256"
Kui soovite, et tulemus on numbriline andmeside tüüp, peate rakendama parsefloatit:

Olgu Randnum \u003d 6.25; Lase ümardatud \u003d Parsefloat (Randnum.tofix (1)); Konsool.log (ümardatud); \u003e 6.3.
Pange tähele, et 5 väärtust ümardatakse, välja arvatud harvadel juhtudel.

Tofixed () ja tipptasemel () meetodid on kasulikud, sest nad ei saa mitte ainult katkestada fraktsioonilise osa, vaid täiendada ka märke pärast komaga, mis on mugav valuutaga töötamisel:

Laske WHOLENUM \u003d 1 lasta DollarsCents \u003d Wholenum.tofix (2); Konsool.log (Dollarsents); \u003e 1.00 "
Tingimus Pange tähele, et tipptasemel annab tulemuseks eksponentsiaalses kirje, kui täisarvude arv on suurem kui täpsus ise:

Laske Num \u003d 123,435 Num.Toprecision (2); \u003e "1.2e + 2"

Kuidas vältida ümardamisvigu kümnendnumbritega

Mõnel juhul liigub tofixed ja toprrecision väärtus 5 väiksemale küljele ja suures osas:

Laske numbril \u003d 1,005; Numtest.tofixed (2); \u003e 1.00 "
Ülaltoodud arvutuse tulemus oli 1,01 ja mitte 1. Kui soovite vältida sarnase vea vältimiseks, saame kasutada Jack L Moore'i pakutud lahendust, mis kasutab eksponentsiaalseid numbreid arvutamiseks:

Funktsiooniruut (tagastamise number (Math.Round (väärtus + E "+ kümnendkoha) +" e - "+ kümnendkohased);)
Nüüd:

Ringi (1.005.2); \u003e 1.01
Kui soovite usaldusväärsemat lahendust kui ülal näidatud lahendus, saate MDN-i minna.

Masin Epsiloni ümardamine

Alternatiivne meetod kümnendnumbrite ümardamise meetod sisestati ES6-sse. Masin Epsiloni ümardamine annab kahe ujuva punkti numbri võrdlemisel mõistliku veapiir. Ümarita, võrdlused võivad anda tulemusi nagu järgmiselt:

0,1 + 0,2 \u003d\u003d\u003d 0.3\u003e FALSE
Me kasutame Math.Epsiloni meie funktsioonis saada õige võrdlus:

Funktsioon EpQuEx (x, y) (tagastage Math.abs (x-y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
Funktsioon võtab kaks argumenti: esimene - praegune arvutus, teine \u200b\u200bon oodatav tulemus. See tagastab kahe järgmise võrdluse:

Epx (0,1 + 0,2, 0,3)\u003e Tõsi
Kõik kaasaegsed brauserid toetavad juba ES6 matemaatilisi funktsioone, kuid kui soovite, et saada toetust brauserites nagu IE 11, kasutage polillid.

Osalise osa lõikamine

Kõik ülaltoodud meetodid suudavad ümardada kümnendnumbrid. Selleks, et lihtsalt numbri katkestada kuni kaks märki pärast komaga, peate kõigepealt korrutama 100-ga ja seejärel saadud tulemus on juba jagatud 100-ga:

Funktsioon kärbitud (Num) (tagastage Math.Trunc (Num * 100) / 100;) kärbitud (3.1416)\u003e 3.14
Kui soovite kohandada meetodit mis tahes semikoolonite arvu kohta, saate kasutada kahekordset bitty eitamist:

Funktsioon kärbitud (lase Numpowerconverteril \u003d Math.Pow (10, detsimalplacs); tagastage ~~ (NumpowerConverter) / NumpowerConverter;)
Nüüd:

Lase Randint \u003d 35,874993; Kärbitud (Randint, 3); \u003e 35.874.

Ümardamine lähima arvu juurde

Selleks, et ümardada kümnendnumbrit lähima arvu juurde rohkem või väiksema külge, sõltuvalt sellest, mida me oleme kõige lähemal, kasutame Math.Round ():

Math.Round (4.3)\u003e 4 Math.Round (4.5)\u003e 5
Pange tähele, et "pool väärtusest", 0,5 ümardatakse suures suunas vastavalt matemaatika reeglitele.

Ümardamine lähima täisarv

Kui soovid alati väiksema poolega ümardada, kasutage Math.floor:

Math.floor (42.23); \u003e 42 Math.floor (36.93); \u003e 36.
Pange tähele, et väiksemate külgede ümardamine kõigi numbrite jaoks, sealhulgas negatiivseks. Kujutage ette pilvelõhkuja, kellel on lõpmatu hulk põrandaid, kaasa arvatud madala taseme põrandad (negatiivsed numbrid). Kui olete liftis alumise taseme vahemikus 2 kuni 3 (mis on väärtus -2,5), annab Math.floor teile -3:

Math.floor (-2,5); \u003e -3.
Aga kui soovite vältida sarnast olukorda, kasutage matemaatikat.Trann, mida toetatakse kõigis kaasaegsetes brauserites (välja arvatud IE / EDGE):

Math.trunc (-41,43); \u003e -41
Leiate Polyfilli MDN-i pakkuda matemaatikat.Trann toetust brauserites ja IE / EDGE.

Ümardades rohkem lähima täisarvuni

Teisest küljest, kui teil on alati vaja ümardada suurima, kasutage Math.ceil. Jällegi, pidage meeles lõputu lift: Math.ceil läheb alati üles, olenemata sellest, kas number on negatiivne või mitte:

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

Ümardades suurema / väiksema arvu

Kui me tahame ümardada lähima numbri, mitme 5, lihtsaim viis luua funktsioon, mis jagab numbri 5 ringi ja seejärel korrutab see sama summa:

Funktsioon Ringto5 (Num) (tagasi Math.Round (Num / 5) * 5);)
Nüüd:

Roundto5 (11); \u003e 10.
Kui soovite oma väärtuse mitmeks ümardada, kasutame üldisemat funktsiooni, edastades esialgse väärtuse ja mitmekordse

Funktsioon RoundTomultiple (Num, mitu) (tagastage Math.Round (Num / Mench) * mitu;)
Nüüd:

Olgu algnumber \u003d 11; Laske mitu \u003d 10; RoundTomultiple (algnumber, mitu); \u003e 10;

Numbri kinnitamine vahemikus

Seal on palju juhtumeid, kui me tahame saada väärtuse X asub vahemikus. Näiteks võib me vajada väärtust 1 kuni 100, kuid samal ajal saime selle parandamiseks 123 väärtuse. Selle parandamiseks saame kasutada minimaalset kasutamist (tagastab väikseima arvu numbrite arvu) ja maksimaalse ( tagastab suurimate mitme numbritega). Meie näites on vahemik 1 kuni 100:

Lase lowbound \u003d 1; Lase Highbound \u003d 100; Lase Numinput \u003d 123; Olgu kinni \u003d Math.max (lowbound, Math.min (Numberput, Highbound)); Konsool.log (kinnitatud); \u003e 100;
Jällegi saame uuesti kasutada operatsiooni ja mähkme selle kõik funktsiooni, me kasutame Daniel X. Moore pakutud lahendust:

Number.Prototype.clamp \u003d funktsioon (min, max) (tagastage Math.min (Math.Max \u200b\u200b(see, min), max););
Nüüd:

Numinput.Clamp (loctound, kõrgustik); \u003e 100;

Gaussi ümardamine

Gaussi ümardamine, tuntud ka kui panga ümardamine, see juhtumi ümardamine toimub lähima mustana. See ümardamismeetod töötab ilma statistilise veata. Parim lahendus tehti välja Tim Down:

Funktsioon GaussRound (lase D \u003d detsimalplaces || 0, M \u003d Math.Pow (10, D), N \u003d + (d? Num * m: NUM) .tofixed (8), i \u003d matemaatiline \u003d N - I, E \u003d 1E-8, R \u003d (f\u003e 0,5 - E && f< 0.5 + e) ? ((i % 2 == 0) ? i: i + 1) : Math.round(n); return d ? r / m: r; }
Nüüd:

GaussRound (2.5)\u003e 2 GaussRound (3.5)\u003e 4 GaussRound (2,57,1)\u003e 2.6
Decimal Sign in CSS:

Kuna JavaScripti kasutatakse sageli HTML-elementide positsioonilise konversiooni loomiseks, võite küsida, mis juhtub, kui loome meie esemete kümnendväärtused:

#Box (laius: 63.667731993PX;)
Hea uudis on see, et kaasaegsed brauserid võtavad arvesse plokmudelis kümnendväärtusi, sealhulgas protsentides või pikslite mõõtühikutes.

Sorteerimine

Väga sageli peame sortima kõik elemendid, näiteks meil on massiivi mängude kirjed, samas kui need tuleks korraldada kahaneva mängijate järjestusena. Kahjuks on standardse sorteerimismeetodil mõned hämmastavad piirangud: see toimib hästi kasutatavate inglise sõnadega, kuid vahetult murrab kohe koosolekul, unikaalsed tähemärgid või sõnad suurtähti.

Sorteeri tähestikulises järjekorras

Tundub, et massiivi sorteerimine tähestikulises järjekorras peaks olema kõige lihtsam ülesanne:

Lase vilja \u003d ["butternut squash", "aprikoos", "cantaloupe"]; fruit.sort (); \u003e "Aprikoosi", "butternut squash", "cantaloupe"]
Siiski me silmitsi probleemiga niipea, kui üks elemendid on suurte puhul:

Olgu vilja \u003d ["butternut squash", "aprot", "cantalope"]; fruit.sort (); \u003e "Cantaloupe", "Aprot", "Butternut Squash"]
See on tingitud asjaolust, et sorteerija võrdleb vaikimisi Unicode'i esimest sümbolit. Unicode on unikaalne kood mis tahes sümbol, olenemata platvormist, olenemata programmist, olenemata keelest. Näiteks, kui vaatate läbi kooditabeli, on "A" märk U + 0061 (kuueteistkümnendsüsteemis 0x61), samas kui sümbol "C" on kood U + 0043 (0x43), mis läheb enne Unicode'i tabelis kui Sümbol "A".

Massiivi sorteerimiseks, mis võib sisaldada esimeste kirjade segatud registreid, peame konverteerima kõik esemed ajutiselt madalama registrisse või määrama oma sorteerimise tellimuse localcompare () meetodi abil mõnede argumentidega. Sellise juhtumi puhul on reeglina parem kohe luua korduva kasutamise funktsiooni:

Funktsioon Alforort (ARR) (tagastamine A.Localecompare (B, EN ", (" tundlikkus ":" Base "));)) Laske vilja \u003d [" butternut squash "," aprikoos "," cantaloupe "; Alphasort (puuvilja)\u003e
Kui soovite saada massiivi ümberpööratud tähestikulises järjekorras, lihtsalt muuta positsioone A ja B funktsiooni:

Funktsioon Alphasort (ARR) (tagastamine B.Localecompare (A, EN ", (" tundlikkus ":" Base "));))) Alforort (puuvilja)\u003e ["cantaloupe", "butternut squash", "aprikoos"]
Tasub pöörata tähelepanu sellele, et lokaalset kontrolli kasutatakse koos argumentidega, see on veel vaja meeles pidada, et seda toetab IE11 +, vanemate IE versioonide jaoks, saame seda kasutada ilma argumentideta ja madalama registrisse:

Funktsiooniformorti (ARR) (tagastamine a.Tolowercase (). Localcompare (B.Tolowercase ());))) Castoror\u003e [aprikoos, "butternut squash", "cantaloupe"]

Numbriline sorteerimine

Kõik see ei kehti selle näite kohta, millest me rääkisime ülaltoodud mängudevahenditest. Mõningate numbrite massiividega, sorteerimine toimib ideaalselt, kuid mingil hetkel võib tulemus olla ettearvamatu:

Olgu rekordeid \u003d; hermores.sort (); \u003e
Fakt on see, et sorte () meetod toodab leksikograafilise võrdluse: ja see tähendab, et numbrid konverteeritakse stringiks ja võrdlused viiakse uuesti läbi uuesti, kaardistades selle stringi esimese iseloomu Unicode laua sümbolites. Seetõttu peame määrama teie sorteeri tellimuse:

Olgu rekordeid \u003d; Hermorees.sort (tagastamine A - B;)); \u003e
Jällegi, et sorteerida numbrid vastupidises järjekorras, muuta positsioone A ja B funktsiooni.

Sorteeri JSON-sarnane struktuur

Ja lõpuks, kui meil on JSON-sarnane andmestruktuur, mida esindab mängudokumentide hulgas:

Olgu skoor \u003d [("nimi": "Daniel", "Score": 21768), ("Nimi": "Michael", "skoor": 33579), ("Nimi": "Alison", "Score": 38395 );
ES6 + abil saate kasutada noolefunktsioone:

Skoori.sort ((a, b) \u003d\u003e b.score - a.Score));
Vanade brauserite jaoks, kellel ei ole sellist toetust:

Skoori.sort (tagastamine A.Score - B.Score));
Nagu näete, on JavaScripti sorteerimine päris ilmselge asi, ma loodan, et need näited muudavad selle elu lihtsaks.

Töö toitefunktsioonidega

Harjutus on operatsioon, mis on algselt määratletud loomuliku numbri mitmekordse korrutamise tulemusena, number A ruutjuur on ruudule antud number. Nende funktsioonidega saame nautida pidevalt igapäevaelus matemaatika õppetundides, sealhulgas arvutamisel alade, mahtude või isegi füüsilise modelleerimise arvutamisel.

JavaScriptis on toitefunktsioon esindatud matemaatikana.Pow (), uues ES7 standardis, uue kasutamise operaator esitati kraadi - "* *".

Erutama

Numbri loomiseks N-Uy kraadi, kasutage matemaatika.Pow () funktsiooni, kus esimene argument on number, mis püstitatakse kraadi, teine \u200b\u200bargument on näitaja kraadi:

Math.Pow (3.2)\u003e 9
Selline salvestusvahendite vorm 3 ruutes või 3 × 3, mille tulemuseks on 9. Teine näide võib manustada muidugi:

Math.Pow (5.3); \u003e 125.
See tähendab 5 Kuubas või 5 × 5 × 5, võrdne 125-ga.

EcMaricript 7 on järgmine versioon JavaScripti, põhimõtteliselt saame kasutada uut kavandatava kasutamise käitaja kraadi - * *, selline vorm salvestamise võib olla visuaalsemaks:

3 ** 2 > 9
Praegu on selle operaatori toetus üsna piiratud, seega ei soovitata seda kasutada.

Võimas funktsioon võib olla kasulik erinevates olukordades. Lihtne näide, arvutades sekundite arvu tund tunnis: Math.Pow (60.2).

Ruudu ja kuupmeetri juur

Math.Sqrt () ja Math.cbr () on matemaatika vastupidine funktsioonid. Nagu me mäletame, on numbri A ruutjuur number, mis annab ruudu väljakujunenud.

Math.SQRT (9)\u003e 3
Samal ajal on numbri A kuupmeetri juure number, mis annab kuubiku väljakujunenud.

Math.CBRT (125)\u003e 5
Math.cbrt () tutvustati JavaScripti spetsifikatsioonile hiljuti ja toetas seega ainult kaasaegseid brausereid: Chrome 38+, Firefox ja Opera 25+ ja Safari 7.1+. Te märkate, et selles loendis puudub Internet Explorer, aga leiate MDN-i Polyfilli.

Näited

Loomulikult saame ühes neist funktsioonidest kasutada ja mitte täisarvu kasutada:

Math.Pow (1,25, 2); \u003e 1,5625 Math.CBRT (56,57)\u003e 3.8387991760286138
Pange tähele, et see toimib üsna hästi argumentide negatiivsete väärtuste kasutamisel:

Math.Pow (-5.2)\u003e 25 Math.Pow (10, -2)\u003e 0,01
Kuid ruutjuure jaoks ei tööta see:

Math.SQRT (-9)\u003e NAN
Matemaatilisest analüüsist teame, et kujuteldava arvu all mõistavad nad negatiivsete numbrite ruutjuured. Ja see võib viia meid teise tehnikat töötamise keeruliste numbritega, kuid see on veel üks lugu.

Võite kasutada Math.Pow () fraktsioonide väärtusi, et leida ruudu ja kuupmeetri juuri numbrid. Ruutjuur kasutab indikaatorit 0,5:

Math.Pow (5, 0,5); // \u003d Math.SQRT (5) \u003d 5 ** (1/2)\u003e 2.23606797749979
Kuid ujuva punkti kapriüksuste tõttu ei saa te õiget tulemust täpselt eeldada:

Math.Pow (2.23606797749979,2)\u003e 5.0000000000001
Sellistes olukordades peate kasutama numbritest väljalülitusi numbritest või ümardamisel mis tahes väärtusele.

Mõned, arusaamatutel põhjustel JavaScript segadusse Math.Pow () funktsiooni Math.Exp (), mis on eksponentsiaalne funktsioon numbrite tervikuna. Märkus: inglise keeles on "eksponent" indikaator tõlgitakse kui "eksponent", nii et see viitab pigem inglise keelt kõnelevatele, kuigi on olemas alternatiivsed indikaatori nimed, nagu indeks, võimsus.

Matemaatilised konstandid

Matemaatikaga töötamist JavaScripti abil hõlbustab mitmed sisseehitatud konstandid. Need konstandid on matemaatikaobjekti omadused. Väärib märkimist, et konstandid on kirjutatud suurtähtede ja mitte kaamelite märge.

Math.abs, Parseint, Parsefloat

JavaScripti numbritega töötamine võib olla palju keerulisem kui tundub. Saadud väärtused ei kuulu alati oodatavatesse vahemikdesse, mõnikord ei pruugi tulemus olla üldse sellest, mida me ootasime.

Math.abs ()

Math.abs () Meetod tagastab numbri absoluutväärtuse, mis meenutab meile sama matemaatilise funktsiooni number a.

Olgu newval \u003d -57,64; Math.abs (Newval); \u003e 57,64
Math.abs (0) naaseb alati nulli, kuid kui paned miinusmärgi enne -Math.absi funktsiooni (Num), siis oleme alati negatiivne väärtus.

Math.abs (0); \u003e -0.

parseint ()

Me teame, et JavaScript mõistab, et "15" on string, mitte number ja näiteks CSS-i omaduste parsimine JavaScriptiga mis tahes väärtusega töötlemata massiivist, võivad meie tulemused olla ettearvamatud. Me võime saada sissepääsule "17px" ja meile ei ole haruldane. Küsimus on selles, kuidas selle stringi teisendada tegelikus väärtuses ja kasutage seda edasistes arvutustes.

Süntaksi: Parseint (string, Radix);

Parseint funktsioon muundab esimene argument edastatakse sellele stringitüübile, tõlgendab seda ja tagastab täisarv või NAN väärtus. Tulemuseks (kui NAN) on täisarv ja esindab esimest argumenti (string), mida peetakse kindlaksmääratud arvu süsteemis (RADIX) numbriks. Näiteks näitab alus 10 konversiooni kümnendnumbrist, 8-oktaalist, 16 kuueteistkümnest ja nii edasi. Kui alus on suurem kui 10, siis tähed kasutatakse numbrite määramiseks rohkem kui 9. Näiteks kuueteistkümnendate numbrite jaoks (baas 16), tähed A kuni F.

Kaaluge näidet CSS-i omaduste töötamisega, kus tavapäraselt räägivad, saame sellise väärtuse:

Olgu ELEM \u003d Document.body; Olgu keskpunkt \u003d aken.getComputtedstyle (ELEM) .Transfornsorigin; \u003e "454PX 2087.19px"
Saame jagada väärtusi ruumides:

Olgukeskused \u003d keskpunktis.SPLIT (""); \u003e ["454PX", "2087.19px"]
Kuid iga element on ikka veel string, me saame sellest vabaneda, rakendades meie funktsiooni:

Olgu Circesx \u003d Parseint (keskused, 10); \u003e 454 Olguskeskud \u003d Parseint (keskused, 10); \u003e 2087.
Nagu näete, täpsustame numbri numbri, mille number konverteeritakse, milleks see parameeter on vabatahtlik, kuid seda soovitatakse kasutada, kui te ei tea, millist rida läheb sisendile.

parsefloat ()

Ülaltoodud näitest märkasite ilmselt, et Parseint vette tagasi murdosa osa. Meie puhul võib Parsefloat töötada ujuva punkti numbritega. Jällegi võib see olla kasulik CSS-i ja muude ülesannete parsimise ajal, eriti ujuva punktiga töötamisel protsentides.

Süntaksi: ParseFloat (string)

Laske fp \u003d "33,33333%"; Konsool.log (parmefoat (FP)); \u003e 33.33333
Pange tähele, et parsefovi süntaksis ei ole teist argumenti.

Me mõistame, et Parseint () ja Parsefloat () on äärmiselt kasulikud tunnused, on oluline arvesse võtta, et ei ole vaja teha vigadeta, mistõttu on vaja kontrollida oodatavate väärtuste vahemikku ja analüüsida lõppkokkuvõttes tulemust Et tagada väärtuste õige.
Saada anonüümselt