Javascript zaokruživanje na 2 znaka. Javascript - strana - zaokruživanje tipopisa. Skraćivanje decimalnih brojeva

Zdravo, ljubitelji JavaScripta. Već ste primijetili da je ovaj jezik vrlo neobičan i da se u svakom dijelu ističe svojim karakteristikama i neobičnim tehničkim rješenjima. Stoga je današnja publikacija posvećena temi: „JavaScript zaokruživanje“.

Nakon što pročitate trenutni članak, naučit ćete zašto je potrebno zaokružiti brojeve, koje metode i svojstva u js-u obavljaju ovu funkciju, kao i šta razlikuje dijeljenje sa 0. Bez mijenjanja svojih principa, priložit ću primjere ključnim tačkama materijal i detaljno opisati svaku radnju. Sada počnimo da učimo!

Važne napomene o brojevima

Prvo, zapamtite da u js-u svi tipovi brojeva (razlomak i cijeli) pripadaju tom tipu Broj. Osim toga, svi su 64-bitni, jer su pohranjeni u formatu “dvostruke preciznosti”, koji je također poznat kao IEEE-754 standard.

Numeričke varijable se kreiraju na uobičajen način:

var numb = 35; // prirodni broj

var drob = 0,93; //decimalni prikaz

var numb16 = 0xFF; //Heksadecimalni brojevni sistem

Podržava druge numeričke reprezentacije. Dakle, možete kreirati i brojeve s pomičnim zarezom (ponekad se nazivaju „naučnim brojevima“).

Sada postoji podrška za vrlo zanimljivu metodu toLocaleString(), koji formatira sve numeričke parametre prema specifikacijama propisanim u ECMA 402. Zahvaljujući tome, veliki brojevi, brojevi telefona, valute, pa čak i procenti su lijepo prikazani u dijaloškom okviru.

var num = 714000.80;

alert(num.toLocaleString());

Za rad sa elementima tipa Number, čitav globalni objekat je dobio gomilu različitih matematičkih funkcija, čije ime Math.

Osim toga, postoje i druge metode koje zaokružuju numeričke vrijednosti na cijele brojeve, desetine, stotinke itd. Pogledajmo ih sve detaljnije.

Velika i moćna matematika

Globalni objekt Math uključuje veliki izbor matematičkih i trigonometrijske funkcije. Ovo je vrlo neophodan objekt i često pomaže programerima pri radu s digitalnim podacima.

Postoje analogi matematike na drugim platformama. Na primjer, u popularnim jezicima kao što su Java i C#, Math je klasa koja podržava sve iste standardne funkcije. Kao što vidite, ovaj instrument je zaista sjajan i moćan.

Sada želim proći kroz specifične metode odgovorne za zaokruživanje i govoriti o njima u detalje.

Math.floor()

Počeću sa Math.sprat. Obratite pažnju na naziv metode. Logično postaje jasno da pošto govorimo o zaokruživanju, a bukvalni prijevod riječi "pod" znači "pod", onda ovaj alatće zaokružiti obrađene vrijednosti naniže.

Također je moguće da broj obrađen ovom funkcijom ostane isti. To je zato što se zaokruživanje vrši prema nestriktnoj nejednakosti (<=). Таким образом, при отработке этой строчки кода:

alert(Math.floor(4.5));

odgovor će biti broj 4.

Math.ceil()

Opet, pogledajte naziv (na taj način se materijal brže upija). Ako neko ne zna, "ceil" znači "plafon". To znači da će numerički podaci biti zaokruženi naviše korištenjem ne-stroge nejednakosti (>=).

alert(Math.ceil(4.5));

Kao što ste možda pretpostavili, odgovor će biti broj 5.

Math.round()

Ova metoda zaokružuje razlomak na najbliži cijeli broj. Dakle, ako je frakcijski dio u rasponu od 0 do 0,5 ne uključujući, onda se zaokruživanje događa na manju vrijednost. A ako je razlomak u rasponu od uključivog 0,5 do sljedećeg cijelog broja, onda se zaokružuje na veći cijeli broj.

alert(Math.round(4.5));

Nadam se da su svi pomislili ili rekli da je tačan odgovor 5.

Još nekoliko metoda

JavaScript također ima 2 druge metode koje se bave zaokruživanjem numeričkih reprezentacija. Međutim, oni su nešto drugačiji.

Govorićemo o alatima kao što su toFixed() I toPrecision(). Oni su odgovorni ne samo za zaokruživanje, već i za njegovu tačnost prema određenim znakovima. Kopajmo dublje.

toFixed()

Korišćenjem ovaj mehanizam Možete odrediti na koliko decimalnih mjesta vrijednost treba zaokružiti. Metoda vraća rezultat kao string. Ispod sam priložio opciju sa tri različite opcije. Analizirajte primljene odgovore.

var num = 5656.9393;

document.writeln(num.toFixed()); // 5657

document.writeln(num.toFixed(2)); // 5656.94

document.writeln(num.toFixed(7)); // 5656.9393000

Kao što vidite, ako ne navedete argument, tada će toFixed ()) zaokružiti razlomku vrijednost na celinu brojevi. Treći red je zaobljen do 2 znaka, a u četvrtom, zbog parametra “7”, dodane su još tri 0.

toPrecision()

Ova metoda djeluje malo drugačije. Umjesto argumenta, možete ostaviti prazan prostor ili postaviti parametar. Međutim, potonji će zaokružiti brojeve na određeni broj cifara, bez obzira na zarez. Evo rezultata koje je proizveo program, prepisanih iz prethodnog primjera:

var num = 5656.9393;

document.writeln(num.toPrecision()); // 5656.9393

document.writeln(num.toPrecision(2)); // 5.7e+3

document.writeln(num.toPrecision(7)); // 5656.939

Karakteristika dijeljenja sa 0 u js

Kao što znate iz časova matematike, ne možete dijeliti sa nulom. Ovo pravilo je uzelo kao osnovu većina kreatora programskih jezika. Stoga, prilikom dijeljenja sa nulom, svi programi generiraju grešku.

Međutim, JavaScript je odličan i ovdje. Dakle, tokom izvođenja takve operacije, ne pojavljuju se poruke o greškama... jer se takva operacija vraća "Beskonačnost"!

Zašto je to tako? Kao što je poznato iz istih matematičkih nauka, što je manji djelitelj, rezultat je veći. Zato su kreatori ovog prototipno orijentisanog jezika odlučili da napuste šablone i krenu svojim putem.

Za one koji se prvi put susreću sa vrijednošću Infinity, u nastavku sam objasnio njene karakteristike.

Beskonačnost – znači beskonačnost i u potpunosti odgovara matematičkom predznaku ∞.

Može biti negativan. Sva standardna pravila za rad sa aritmetičkim operatorima su takođe sačuvana.

upozorenje (12/ 0); //Beskonačnost

upozorenje(12.34/ 0); //Beskonačnost

upozorenje (-3/ 0); // -Beskonačnost

Pretpostavljam da ću ovde završiti. Ako vam se svidjela publikacija, svakako se pretplatite na moj blog. Nemojte biti pohlepni sa linkovima do zanimljivih članaka i podijelite ih sa svojim prijateljima. Bye bye!

U ovom članku ćemo detaljno pogledati brojeve, matematičke operatore, načine pretvaranja broja u niz i obrnuto, kao i mnoge druge važne točke.

isFinite funkcija

IsFinite funkcija vam omogućava da provjerite da li je argument konačan broj.

Kao odgovor, ova funkcija vraća false ako je argument Beskonačnost, -Beskonačnost, NaN ili će biti bačen na jednu od ovih posebnih numeričkih vrijednosti. U suprotnom, ova funkcija će vratiti true.

IsFinite (73); // true isFinite(-1/0); // false isFinite(Beskonačnost); // false isFinite(NaN); // false isFinite("Tekst"); // false

Pored globalne isFinite funkcije, JavaScript također ima metodu Number.isFinite. Za razliku od isFinite, on ne prisiljava argument da se konvertuje u broj.

IsFinite("73"); // true Number.isFinite("73"); // false

isNaN funkcija

IsNaN funkcija je dizajnirana da odredi da li je argument broj ili se može konvertirati u jedan. Ako je tako, tada funkcija isNaN vraća false. U suprotnom vraća true.

IsNaN(NaN); //true isNaN("25px"); //tačno, jer 20px nije broj isNaN(25.5); //false isNaN("25.5"); //false isNaN(" "); //netačno, jer razmak ili nekoliko razmaka se konvertuje u 0 isNaN(null); //netačno, jer null se pretvara u 0 isNaN(true); //netačno, jer true se pretvara u 1 isNaN(false); //netačno, jer false se pretvara u 0

Ako se ova radnja mora izvesti bez pretvorbe tipa, onda koristite metodu Number.isNaN. Ova metoda je uvedena u jezik počevši od ECMAScript 6.

Kako eksplicitno pretvoriti niz u broj?

Možete eksplicitno pretvoriti niz u broj koristeći sljedeće metode:

1. Koristite unarni operator +, koji se mora staviti ispred vrijednosti.

+"7,35"; // 7.35 +"tekst"; // NaN

Ova metoda zanemaruje razmake na početku i kraju reda, kao i \n (prevod reda).

+" 7,35 "; //7.35 +"7.35 \n "; //7.35

Koristeći ovu metodu Imajte na umu da se prazan string ili string koji se sastoji od razmaka i \n konvertuje u broj 0. Osim toga, takođe konvertuje null tip podataka i logičke vrednosti u broj.

Null; //0 +true; //1 +false; //0 +" "; //0

2. ParseInt funkcija. Ova funkcija je dizajnirana za pretvaranje argument za cijeli broj. Za razliku od korištenja unarni operator +, ovu metodu omogućava vam da konvertujete niz u broj, u kojem nisu svi znakovi numerički. Počinje pretvarati string, počevši od prvog znaka. I čim naiđe na nenumerički znak, ova funkcija zaustavlja svoj rad i vraća rezultirajući broj.

ParseInt("18px"); //18 parseInt("33.3%"); //33

Ova funkcija može raditi sa različiti sistemi Brojevi (binarni, oktalni, decimalni, heksadecimalni). Baza brojevnog sistema je specificirana pomoću 2 argumenta.

ParseInt("18px", 10); //18 parseInt("33.3%", 10); //33 parseInt("101",2); //5 parseInt("B5",16); //181

Pored funkcije parseInt, JavaScript ima metodu Number.parseInt. Ova metoda se ne razlikuje od funkcije parseInt i uvedena je u JavaScript sa specifikacijom ECMASCRIPT 2015 (6).

3. funkcija parseFloat. ParseFloat funkcija je slična parseInt, osim što vam omogućava da konvertujete argument u razlomak.

ParseFloat("33,3%"); //33.3

Osim toga, funkcija parseFloat, za razliku od parseInt, nema 2 argumenta, pa stoga uvijek pokušava string tretirati kao broj u sistemu decimalnog zapisa.

ParseFloat("3.14"); parseFloat("314e-2"); parseFloat("0.0314E+2");

Pored funkcije parseFloat, JavaScript ima metodu Number.parseFloat. Ova metoda se ne razlikuje od funkcije parseFloat i uvedena je u JavaScript sa specifikacijom ECMASCRIPT 2015 (6).

Pretvaranje broja u niz

Možete pretvoriti broj u string pomoću metode toString.

(12.8).toString(); //"12.8"

Metoda toString vam također omogućava da navedete bazu brojevnog sistema, uzimajući u obzir koju trebate eksplicitno pretvoriti broj u niz:

(255).toString(16); //"ff"

Kako provjeriti da li je varijabla broj

Možete odrediti da li je vrijednost varijable broj koristeći jedan od sljedećih metoda:

1. Korištenje funkcija isNaN i isFinite:

// myVar je varijabla if (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) ( //myVar je broj ili se može prebaciti na njega);

Kao funkcija:

// funkcija funkcija isNumeric(value) (return !isNaN(parseFloat(value)) && isFinite(parseFloat(value)); ) // koristite var myVar = "12px"; console.log(isNumeric(myVar)); //tačno

Ova metoda vam omogućava da odredite da li je navedena vrijednost broj ili se može pretvoriti u jedan. Ova opcija ne broji prazan niz, niz razmaka, null, beskonačnost, -beskonačnost, istinito i netačno kao broj.

2. Koristeći typeof operator i isFinite, isNaN funkcije:

// funkcija koja provjerava da li je vrijednost brojčana funkcija isNumber(value) (vraća tip vrijednosti === "broj" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Ova funkcija određuje da li je navedena vrijednost tipa Broj i da li je to jedna od posebnih vrijednosti Infinity, -Infinity i NaN. Ako je tako, onda ova funkcija vraća true.

3. Korištenje metode ECMAScript 6 Number.isInteger(value). Ova metoda vam omogućava da odredite da li je navedena vrijednost cijeli broj.

Number.isInteger("20"); //netačno, jer ova metoda ne pretvara string u broj Number.isInteger(20); //tačno, jer ova vrijednost je broj

Parni i neparni brojevi

Možete provjeriti je li broj paran ili neparan koristeći sljedeće funkcije:

// Funkcija za provjeru broja za parnu paritetnu funkciju isEven(n) ( return n % 2 == 0; ) // Funkcija za provjeru broja za parnu funkciju parnosti isOdd(n) ( return Math.abs(n % 2) == 1;

Ali prije izvođenja takve provjere, preporučljivo je osigurati da je navedena vrijednost broj:

Vrijednost = 20; if (Broj.isInteger(vrijednost)) ( if (isEven(vrijednost)) ( console.log("Broj " + value.toString() + " - paran"); ) )

Prosti brojevi u Javascriptu

Pogledajmo primjer u kojem prikazujemo koristeći Javascript prosti brojevi od 2 do 100.

// Funkcija koja provjerava da li je broj primarna funkcija isPrime(value) (if (isNaN(value) || !isFinite(value) || value%1 || value< 2) return false; var max=Math.floor(Math.sqrt(value)); for (var i = 2; i< = max; i++) { if (value%i==0) { return false; } } return true; } // создать массив, который будет содержать простые числа от 2 до 100 var primaryNumber = ; for (var i = 2; i <= 100; i++) { if(isPrime(i)) primaryNumber.push(i); } // вывести в консоль простые числа от 2 до 100 console.log(primaryNumber);

Zaokruživanje broja u Javascriptu

Postoje različiti načini da se razlomak zaokruži na cijeli broj u JavaScript-u.

1. Koristeći metode Math.floor, Math.ceil i Math.round posebno dizajnirane za ovo. Metoda Math.floor zaokružuje razlomak na najbliži cijeli broj, tj. jednostavno odbacuje razlomak. Math.ceil zaokružuje razlomak na najbliži cijeli broj. Math.round zaokružuje broj naviše ili naniže u zavisnosti od vrijednosti razlomka. Ako je razlomak veći ili jednak 0,5, onda gore, u suprotnom je uvijanje dolje.

Console.log(Math.floor(7.9)); //7 console.log(Math.ceil(7.2)); //8 console.log(Math.round(7.5)); //8

2. Korištenje metode toFixed(precizne). Ova metoda zaokružuje razlomak broja na određenu preciznost. Rezultat zaokruživanja se vraća kao niz.

Console.log(7.987.toFixed(2)); //"7.99"

Ako nema dovoljno decimalnih mjesta za formiranje specificirane preciznosti broja, tada se popunjava nulama.

Console.log(7.987.toFixed(5)); //"7.98700"

3. Korištenje metode toPrecision(accuracy). Ova metoda predstavlja broj sa određenom preciznošću. Istovremeno, on može zaokružiti ne samo razlomak, već i cijeli dio broja. Ovisno o rezultatu, ova metoda može prikazati rezultirajući broj sa fiksnom točkom ili u eksponencijalnom obliku.

Console.log((1001).toPrecision(2)); //"1.0e+3" console.log((1001).toPrecision(5)); //"1001.0" console.log((12.4).toPrecision(1)); //"1e+1" console.log((12.4).toPrecision(2)); //"12" console.log((12.4).toPrecision(3)); //"12.4" console.log((12.4).toPrecision(5)); //"12.400"

4. Korištenje logičkih operatora NOT ili OR.

//preko dvostruke logičke negacije console.log(~~7.9); //7 // korištenjem logičkog ILI sa nulom: console.log(7.9^0); //7

Cjelobrojni i razlomački dio broja

Možete dobiti cjelobrojni dio broja koristeći metode Math.floor() i parseInt():

Console.log(Math.floor(7.21)); // 7 console.log(parseInt(7.21)); // 7

Možete dobiti razlomački dio broja koristeći operator procenat (%). Ovaj operator vraća ostatak koji će se dobiti dijeljenjem prvog broja s drugim. U tom slučaju morate koristiti 1 kao 2. broj.

Console.log(7,21%1); // 0,20999999999999996 // tačno do 2 decimale console.log((7.21%1).toFixed(2)); // "0,21"

Osim toga, frakcijski dio se također može dobiti pomoću proračuna:

Var broj = 7,21; var fractionNumber = broj - Math.floor(Math.abs(broj)); console.log(fractionNumber); // 0.20999999999999996

Da li je broj djeljiv cijelim brojem?

Možete odrediti da li je broj djeljiv cijelim brojem pomoću operatora procenta:

Var broj = 9; // ako je ostatak broja podijeljen sa 3 0, onda da, inače ne if (broj%3==0) ( console.log ("Broj " + broj + " je djeljiv sa 3"); ) else ( console("Broj " + broj + " nije djeljiv sa 3");

Formatiranje brojeva

U JavaScriptu, metoda toLocaleString() vam omogućava da formatirate izlaz broja u skladu sa regionalnim standardima (jezičke postavke operativnog sistema).

Na primjer, formatirajmo broj u skladu sa regionalnim standardima koji su standardno instalirani u sistemu:

Var broj = 345,46; console.log(number.toLocaleString()); //"345.46"

Na primjer, formatirajmo broj u skladu s regionalnim standardima Rusije (ru):

Console.log((108.1).toLocaleString("ru-RU")); //"108.1"

Ova metoda se također može koristiti za formatiranje broja kao valute:

Console.log((2540.125).toLocaleString("ru-RU",(style:"currency", valuta:"RUB"))); //"2.540,13 ₽" console.log((89.3).toLocaleString("ru-RU",(style:"currency", valuta:"USD"))); //"89.30 $" console.log((2301.99).toLocaleString("ru-RU",(style:"currency", valuta:"EUR"))); //"€2,301.99"

Predstavljanje broja u procentima:

Console.log((0.45).toLocaleString("ru-RU",(style:"percent"))); //"45%"

Podijelite broj na cifre (koristite svojstvoGrouping):

Console.log((125452.32).toLocaleString("ru-RU",(useGrouping:true))); //"125,452.32"

Ispišite broj sa određenim brojem cifara (2) nakon decimalnog zareza:

Console.log((1240.4564).toLocaleString("ru-RU",(minimumFractionDigits:2, maximumFractionDigits:2))); //"1.240,46"

Poređenje brojeva

Sljedeći operatori se koriste za poređenje brojeva u JavaScript-u: == (jednako), != (nije jednako), > (veće od),< (меньше), >= (veće ili jednako),<= (меньше или равно).

Na primjer, uporedimo dva broja:

Console.log(2>3); //false console.log(5>=3); //tačno

Prilikom poređenja brojeva sa razlomkom, potrebno je uzeti u obzir greške koje mogu nastati prilikom ovih proračuna.

Na primjer, u JavaScript-u zbir brojeva (0,2 + 0,4) nije jednak 0,6:

Console.log((0.2+0.4)==0.6); //false

Greške nastaju jer se sve kalkulacije rade kompjuterski ili drugim elektronski uređaj proizvodi u 2 brojevnom sistemu. One. Prije izvođenja bilo kakve radnje, računar mora prvo pretvoriti brojeve prikazane u izrazu u drugi brojevni sistem. Ali ne može svaki razlomak decimalni broj biti tačno predstavljen u 2. brojevnom sistemu.

Na primjer, broj 0,25 10 in binarni sistem tačno konvertovano.

0,125 × 2 = 0,25 | 0 0,25 × 2 = 0,5 | 0 0,5 × 2 = 1 | 1 0,125 10 = 0,001 2

Na primjer, broj 0,2 10 može se pretvoriti u sistem 2 samo sa određenom tačnošću:

0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 ... 0,2 10 = 0,001100110011... 2

Kao rezultat toga, ove greške će uticati na izračunavanje zbira dva broja i rezultate poređenja. One. Ispostavilo se da će JavaScript zapravo vidjeti ovaj unos na sljedeći način:

0.6000000000000001==0.6

Kada računate ili prikazujete brojeve sa razlomcima, uvijek morate naznačiti preciznost s kojom to želite učiniti.

Na primjer, uporedite brojeve do 2 decimale koristeći metode toFixed() i toPrecision():

//metoda toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //tačno //metoda toPrecision() console.log((0.2+0.4).toPrecision(2)==(0.6).toPrecision(2)); //tačno

Osnovne matematičke operacije

U JavaScript-u postoje sljedeći matematički operatori: + (sabiranje), - (oduzimanje), * (množenje), / (dijeljenje), % (modulo), ++ (povećati vrijednost za 1), -- (smanji vrijednost za 1 ).

6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, tj. 6:3=2 => 6-3*2 => odmor(0) 5%2 //1, tj. 5:2=2(.5) => 5-2*2 => odmor(1) 7,3%2 //1,3, tj. 7.3:2=3(.65) => 7.3-2*3 => rest(1.3) //znak rezultata % operacije jednak je predznaku prve vrijednosti -9%2.5 //-1.5 , tj. 9:2.5=3(.6) => 9-2.5*3 => odmor (1.5) -9%-2.5 //-1.5, tj. 9:2.5=3(.6) => 9-2.5*3 => odmor(1.5) -2%5 //-2, tj. 2:5=0(.4) => 2-5*0 => odmor(2) x = 3; console.log(x++); //izlazi 3, zatim postavlja 4 console.log(x); //4 x = 3; console.log(++x); // postavlja 4 i izlazi x = 5; console.log(x--); //izlazi 5, zatim postavlja 4 console.log(x); //4 x = 5; console.log(--x); // postavlja 4 i izlazi Osim toga, JavaScript ima kombinacijske operatore: x+=y (x=x+y), x-=y (x=x-y), x*=y (x=x*y), x/= y (x=x/y), x%=y (x=x%y).

x = 3; y = 6; x+=y; console.log(x); //9 x = 3; y = 6; x-=y; console.log(x); //-3 x = 3; y = 6; x*=y; console.log(x); //18 x = 3; y = 6; x/=y; console.log(x); //0,5 x = 3; y = 6; x%=y; console.log(x); //3 Često proračuni daju rezultate koji su izvan željenih raspona. Kao rezultat toga, neophodno je implementirati JavaScript zaokruživanje

do određene vrijednosti.

Zašto okrugli brojevi?

0.1 * 0.2; > 0.020000000000000004

JavaScript ne pohranjuje cijele brojeve jer su njihove vrijednosti predstavljene kao brojevi s pomičnim zarezom. Mnogi razlomci se ne mogu predstaviti kao brojevi sa određenim konačnim brojem decimalnih mjesta, tako da JavaScript može generirati sljedeće rezultate:

U praksi to neće napraviti nikakvu razliku, jer je riječ o grešci od 2 kvintiliontinke. Ali to može uticati na rezultate kada radite s brojevima koji predstavljaju vrijednosti valute, procente ili veličinu datoteke. Stoga, trebate učiniti ili na određeno decimalno mjesto.

Zaokruživanje decimalnih brojeva

  • Da biste "izrezali" decimalni broj, koristite metode toFixed() ili toPrecision(). Obojica uzimaju jedan argument, koji specificira broj značajnih i decimalnih mjesta koje treba uključiti u rezultat:
  • ako toFixed() nema specificiran argument, zadana vrijednost je 0, odnosno nema decimalnih mjesta; maksimalna vrijednost argumenta je 20;

ako nije dat argument toPrecision(), broj se ne mijenja.

var randNum = 6,25; randNum.toFixed(); > "6" Math.PI.toPrecision(1); > "3" var randNum = 87,335; randNum.toFixed(2); > "87,33" var randNum = 87,337; randNum.toPrecision(3); > "87.3"

I toFixed() i toPrecision vraćaju zaokruženi string prikaz rezultata, a ne broj. To znači da će dodavanje zaokruženog na randNum rezultirati konkatenacijom nizova, a ne jednim brojem:

console.log(randNum + rounded); > "6.256"

Ako želite da JavaScript zaokruži broj na najbližu stotinu, koristite parseFloat() :

var randNum = 6,25; var rounded = parseFloat(randNum.toFixed(1)); console.log(zaokružen); > 6.3

toFixed() i toPrecision() su takođe korisne metode za sečenje velika količina decimalna mjesta. Ovo je korisno kada radite s brojevima koji predstavljaju novčane jedinice:

var wholeNum = 1 var dollarsCents = wholeNum.toFixed(2); console.log(dollarsCents); > "1.00"

Imajte na umu da ako broj ima više cifara od specificirane preciznosti, toPrecision će ispisati rezultat u naučnom formatu:

var num = 123.435 num.toPrecision(2); > "1.2e+2"

Kako izbjeći greške pri zaokruživanju decimala

U nekim slučajevima toFixed i toPrecision implement JavaScript zaokružuje 5 prema dolje, a ne na više:

var numTest = 1.005; numTest.toFixed(2); > 1;

Rezultat gornjeg primjera bi trebao biti 1.01, a ne 1. Ako želite izbjeći ovu grešku, preporučujem korištenje eksponencijalnih brojeva:

funkcija round(vrijednost, decimale) (vrati Broj(Math.round(value+"e"+decimali)+"e-"+decimali); )

primjena:

krug(1.005,2); > 1.01

Ako vam je potrebno još robusnije rješenje od zaokruživanja, dostupno je na MDN.

Zaokruživanje sa ipsilonom

Alternativni metod JavaScript zaokruživanje na desetine uveden je u ES6 ( poznat i kao JavaScript 2015). « Machine epsilon" pruža razumnu marginu greške prilikom poređenja dva broja s pomičnim zarezom. Bez zaokruživanja, poređenja mogu dati rezultate slične sljedećim:

0,1 + 0,2 === 0,3 > netačno

Math.EPSILON se može koristiti u funkciji da se dobije valjano poređenje:

funkcija epsEqu(x, y) (vrati Math.abs(x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }

Funkcija uzima dva argumenta: jedan sadrži proračune, drugi očekivani (zaokruženi) rezultat. Vraća poređenje ova dva parametra:

epsEqu(0,1 + 0,2, 0,3) > istina

Svi moderni pretraživači podržavaju ES6 matematičke funkcije. Ali ako trebate pružiti podršku u starijim pretraživačima, onda morate koristiti polifile.

Skraćivanje decimalnih brojeva

Sve prethodno predstavljene metode rade JavaScript zaokruživanje na desetine. Da biste skratili pozitivan broj na dvije decimale, pomnožite ga sa 100, ponovno ga skratite, a zatim podijelite rezultat sa 100:

funkcija truncated(num) (vrati Math.trunc(num * 100) / 100; ) truncated(3.1416) > 3.14

Ako vam treba nešto fleksibilnije, možete koristiti bitni operator:

funkcija truncated(num, decimalPlaces) ( var numPowerConverter = Math.pow(10, decimalPlaces); return ~~(num * numPowerConverter)/numPowerConverter; )

Upotreba:

var randInt = 35,874993; truncated(randInt,3); > 35.874

Zaokružite na najbliži broj

Za implementaciju JavaScript zaokruživanje na najbliži cijeli broj, Math.round() se koristi:

Math.round(4.3) > 4 Math.round(4.5) > 5

Imajte na umu da " poluvrijednosti", kao što je .5, zaokružuju se nagore.

Zaokružite na najbliži cijeli broj

Ako želite zaokružiti naniže, koristite metodu Math.floor():

Math.floor(42.23); > 42 Matematički pod (36.93); > 36

Zaokruživanje prema dolje ima jedan smjer za sve brojeve, uključujući negativne. Ovo se može zamisliti kao neboder sa beskonačnim brojem spratova, uključujući ispod nivoa temelja ( koji predstavljaju negativne brojeve). Ako ste u liftu između 2. i 3. kata u podrumu ( što odgovara vrijednosti od -2,5), Math.floor će vas odvesti na sprat -3:

Math.floor(-2.5); > -3

Ako ovo trebate izbjeći, koristite JavaScript Math zaokruživanje koristeći Math.trunc() , podržano u svim moderni pretraživači(osim IE/Edge):

Math.trunc(-41,43); > -41

MDN takođe pruža trolinijski polifil za pružanje podrške za Math.trunc u starijim pretraživačima i IE/Edge.

Zaokružite na najbliži cijeli broj

Ako želite zaokružiti decimalne brojeve naviše, koristite Math.ceil . Ova metoda se također može smatrati beskonačnim liftom: Math.ceil vas uvijek odvede „gore“, bez obzira da li je broj negativan ili pozitivan:

Math.ceil(42.23); > 43 Math.ceil(36.93); > 37 Math.ceil(-36,93); -36

Zaokružite na najbliži višekratnik

Ako trebate zaokružiti vrijednost na najbliži višekratnik od 5, kreirajte funkciju koja dijeli broj sa 5, zaokružuje ga, a zatim množi rezultat istom vrijednošću:

funkcija roundTo5(num) (vrati Math.round(num/5)*5; )

Upotreba:

roundTo5(11); > 10

Ako vam je potreban JavaScript za zaokruživanje na dvije znamenke, funkciji možete proslijediti i sjeme i višekratnik:

funkcija roundToMultiple(num, multiple) (vrati Math.round(num/multiple)*multiple; )

Da biste koristili funkciju, u njen poziv uključite broj koji treba zaokružiti i višekratnik:

var početniBroj = 11; var multiple = 10; roundToMultiple(početni broj, višestruki); > 10;

Da biste zaokružili vrijednosti samo naviše ili naniže, zamijenite okrugli stropom ili podom u funkciji.

Vezivanje opsega

Ponekad morate dobiti vrijednost za x koja mora biti unutar određenog raspona. Na primjer, potrebna nam je vrijednost od 1 do 100, ali dobijamo vrijednost 123. Da popravite ovo možete koristiti min() ( vraća najmanji broj) i max ( vraća maksimalno dozvoljeni broj).

Upotreba:

var lowBound = 1; var highBound = 100; var numInput = 123; var stegnut = Math.max(lowBound, Math.min(numInput, highBound)); console.log(zategnuto); > 100;

Možete kreirati funkciju ili proširenje klase Number.

Zdravo. Danas ćemo u koloni o Javascriptu pogledati kako podesiti broj decimalnih mjesta u brojevima s pokretnim zarezom u javascriptu. Na primjer, trebate ostaviti 3 decimalna mjesta prilikom ispisa, ili samo dvije.

Zadatak: javascript broj decimalnih mjesta

Dakle, suočeni smo sa zadatkom: postoji rezultat proračuna u kojem postoje brojevi prije decimalnog zareza i nakon decimalnog zareza. Decimala. Recimo da je rezultat ovakav: 1538.9891200153. Ali prilikom izlaza, trebali biste dobiti broj koji odražava iznos, gdje je ispred decimalne točke broj novčanica, a nakon broja kopejki.

Postoji nekoliko načina za rješavanje ovog problema.

Rješenje 1: javascript broj decimalnih mjesta pomoću metode toFixed

toFixed je ugrađena javascript metoda koja se primjenjuje na bilo koji broj, uzimajući preciznost zaokruživanja (to jest, broj decimalnih mjesta) kao parametar.

Var num=1538.9891200153; num_str=num.toFixed(); //num_str=1538; num_str=num.toFixed(2); //num_str=1538.98; num_str=num.toFixed(5); //num_str=1538.98912;

Parametar preciznosti u ovoj funkciji ne smije biti manji od 0 (ne prihvaća negativne vrijednosti) i ne veći od 20.

Možete i bez varijable, na primjer ovako:

Broj_str=(1538.9891200153).toFixed(2); //num_str=1538.98;

Rješenje 2: javascript broj decimalnih mjesta pomoću metode toPrecision

Ovo rješenje je bazirano na istoj ugrađenoj javascript metodi. Posebnost ove metode je da parametar uzet kao ulaz ne pokazuje tačnost (broj decimalnih mjesta), već ukupan broj decimalnih mjesta (i prije i poslije decimalne zareze).

Var num=1538.9891200153; num_str=num.toPrecision(5); //num_str=1538.9; num_str=num.toPrecision(7); //num_str=1538.989;

Rješenje bez decimalnih mjesta: javascript broj decimalnih mjesta

Ako trebate potpuno ukloniti decimalna mjesta, to jest, trebate zaokružiti razlomak na cijeli broj, tada možete koristiti funkcije klase Math: okruglo, strop i pod.
Zaokruži - zaokružuje naviše ili naniže (u zavisnosti od broja). Ako je vrijednost iza decimalnog zareza veća od polovine, zaokružuje se naviše, ako je manja, zaokružuje se naniže. To jest, ako 0,51 postane 1, ako 0,49 postane 0.

Ceil - od engleskog. Plafon se uvijek zaokružuje prema gore.

Sprat - sa engleskog. Pod se uvijek zaokružuje.

Var num = 1538.9891200153; num_str=Math.round(num); //num_str=1539; num_str=Matematika.pod(broj); //num_str=1538; num_str=Math.ceil(num); //num_str=1539;

To je sve. Nadam se da vam je ova napomena pomogla da riješite svoj problem. Ako nešto ne uspije, postavljajte pitanja koristeći zeleno dugme „Pitajte stručnjaka“ ili u komentarima.