Internet Windows Android
Kengaytirish

JavaScript -da raqamlarni yaxlitlash. Javascript - eng yaqin tamsayıgacha yaxlitlash

Ushbu maqolada biz raqamlar, matematik operatorlar, raqamni mag'lubiyatga aylantirish usullari va aksincha, boshqa ko'plab muhim jihatlarni batafsil ko'rib chiqamiz.

IsFinite funktsiyasi

IsFinite funktsiyasi argumentning cheklanganligini tekshirishga imkon beradi.

Bunga javoban, agar argument Infinity, -Infinity, NaN bo'lsa yoki bu maxsus raqamli qiymatlardan biriga o'tkazilsa, bu funksiya false qaytaradi. Aks holda, bu funksiya qaytadi.

IsFinite (73); // haqiqiy isFinite (-1/0); // noto'g'ri isFinite (Infinity); // noto'g'ri isFinite (NaN); // noto'g'ri isFinite ("Matn"); // yolg'on

IsFinite global funktsiyasidan tashqari, JavaScript -da Number.isFinite usuli ham mavjud. IsFinite -dan farqli o'laroq, u argumentni raqamga majburlamaydi.

IsFinite ("73"); // haqiqiy Number.isFinite ("73"); // yolg'on

IsNaN funktsiyasi

IsNaN funktsiyasi argumentning raqam ekanligini yoki unga aylantirish mumkinligini aniqlash uchun mo'ljallangan. Agar shunday bo'lsa, isNaN funktsiyasi false qaytaradi. Aks holda, u haqiqatni qaytaradi.

IsNaN (NaN); // haqiqiy isNaN ("25 piksel"); // rost, chunki 20 piksel - bu naN (25,5) raqam emas; // noto'g'ri isNaN ("25,5"); // noto'g'ri isNaN (""); // yolg'on, chunki bo'sh joy yoki bir nechta bo'shliqlar 0 isNaN ga aylanadi (null); // yolg'on, chunki null 0 isNaN (haqiqiy) ga aylanadi; // yolg'on, chunki true 1 isNaN ga aylanadi (noto'g'ri); // yolg'on, chunki false 0 ga o'zgartiradi

Agar bu amalni matn terishsiz bajarish kerak bo'lsa, Number.isNaN usulidan foydalaning. Bu usul ECMAScript 6dan beri tilga kiritilgan.

Qanday qilib satrni aniq raqamga aylantirishim mumkin?

Quyidagi usullar yordamida satrni aniq raqamga aylantirishingiz mumkin:

1. Foydalanish unary + operatori qiymatdan oldin joylashtirilishi kerak.

+ "7.35"; // 7.35 + "matn"; // NaN

Bu usul etakchi va oxirgi bo'sh joy va \ n (chiziqli tasma) ni hisobga olmaydi.

+ "7.35"; //7.35 + "7.35 \ n"; //7.35

Bu usuldan foydalanib, bo'sh satr yoki bo'sh joy va \ n dan tashkil topgan satr 0 raqamiga tarjima qilinishiga e'tibor berish kerak. Bundan tashqari, u bo'sh ma'lumotlar turini va mantiqiy qiymatlarni raqamga o'zgartiradi. .

Nol; // 0 + to'g'ri; // 1 + noto'g'ri; // 0 + ""; // 0

2. parseInt funktsiyasi. Bu funksiya konvertatsiya qilish uchun mo'ljallangan butun songa argument... Foydalanishdan farqli o'laroq yagona operator +, bu usul satrni raqamga aylantirish imkonini beradi hamma belgilar ham raqamli emas... U birinchi belgidan boshlab qatorni konvertatsiya qila boshlaydi. Va raqamli bo'lmagan belgiga duch kelishi bilan, bu funktsiya o'z ishini to'xtatadi va natijada olingan raqamni qaytaradi.

ParseInt ("18 piksel"); // 18 parseInt ("33,3%"); // 33

Bu funksiya har xil sanoq tizimlari bilan ishlashi mumkin (ikkilik, sakkizlik, o'nlik, o'n oltilik). Radix 2 ta argument yordamida aniqlanadi.

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

ParseInt funktsiyasidan tashqari, JavaScript -da Number.parseInt usuli mavjud. Bu usul parseInt funktsiyasidan farq qilmaydi va JavaScript -da ECMASCRIPT 2015 spetsifikatsiyasi bilan kiritilgan (6).

3. parseFloat funktsiyasi. ParseFloat parseInt -ga o'xshaydi, faqat argumentni kasrga aylantiradi.

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

Bundan tashqari, parseFloat funktsiyasi, parseIntdan farqli o'laroq, 2 ta argumentga ega emas va shuning uchun u har doim qatorni o'nlik raqam sifatida ko'rib chiqishga harakat qiladi.

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

JavaScript -da parseFloat funktsiyasidan tashqari Number.parseFloat usuli mavjud. Bu usul parseFloat funktsiyasidan farq qilmaydi va JavaScript -da ECMASCRIPT 2015 spetsifikatsiyasi bilan kiritilgan (6).

Raqamni satrga aylantirish

ToString usuli yordamida raqamni satrga aylantirish mumkin.

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

ToString usuli, shuningdek, raqamni satrga aniq yuborish kerakligini hisobga olgan holda, sanoq tizimining asosini belgilashga imkon beradi:

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

O'zgaruvchining raqam ekanligini qanday tekshirish mumkin

Quyidagi usullardan birini ishlatib, o'zgaruvchining qiymati son ekanligini aniqlashingiz mumkin:

1. isNaN va isFinite funksiyalaridan foydalanish:

// myVar o'zgaruvchidir, agar (! isNaN (parseFloat (myVar)) && isFinite (parseFloat (myVar)))) (// myVar - bu raqam yoki unga yuborish mumkin);

Funktsiya sifatida:

// funktsiya isNumeric (qiymat) (qaytish! isNaN (parseFloat (qiymat)) && isFinite (parseFloat (qiymat));) // foydalanish var myVar = "12px"; console.log (isNumeric (myVar)); // rost

Bu usul sizga ko'rsatilgan qiymatning raqam ekanligini yoki unga aylantirish mumkinligini aniqlash imkonini beradi. Bu parametr bo'sh qatorni, bo'sh joylar qatorini, null, Infinity, -Infinity, true yoki false son sifatida qabul qilmaydi.

2. Typeof operatori va isFinite, isNaN funktsiyalari yordamida:

// qiymatning raqam funktsiyasi ekanligini tekshiradigan funktsiya isNumber (value) (qiymatning qaytish turi === "(! LANG: raqam)" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Bu funktsiya ko'rsatilgan qiymatning Raqam turiga kirishini va Infinity, -Infinity va NaN maxsus qiymatlaridan biri ekanligini aniqlaydi. Agar shunday bo'lsa, bu funksiya rostini qaytaradi.

3. ECMAScript 6 Number.isInteger (qiymat) usulidan foydalanish. Bu usul sizga ko'rsatilgan qiymatning butun son ekanligini aniqlash imkonini beradi.

Number.isInteger ("20"); // yolg'on, chunki bu usul qatorni Number.isInteger (20) raqamiga tarjima qilmaydi; // rost, chunki berilgan qiymat - bu raqam

Yagona va toq raqamlar

Quyidagi funktsiyalar yordamida raqamning juft yoki toq ekanligini tekshirishingiz mumkin:

// Raqamni tenglik funktsiyasi uchun tekshirish funktsiyasi isEven (n) (qaytish n% 2 == 0;) // G'alati funksiya uchun raqamni tekshirish funktsiyasi isOdd (n) (qaytarish Math.abs (n% 2) == 1;)

Ammo bunday tekshiruvdan oldin, ko'rsatilgan qiymat raqam ekanligiga ishonch hosil qilish tavsiya etiladi:

Qiymat = 20; if (Number.isInteger (qiymat)) (if (isEven (qiymat))) (console.log ("Number" + value.toString () + "- even");))

Javascript boshlang'ichlari

Keling, Javascript yordamida 2 dan 100 gacha oddiy sonlarni ko'rsatadigan misolni ko'rib chiqaylik.

// Raqam asosiy funktsiyani tekshiruvchi funksiya 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);

Javascriptda raqamni yaxlitlash

JavaScript -da kasr sonini butun songa aylantirishning turli usullari mavjud.

1. Maxsus yaratilgan Math.floor, Math.ceil va Math.round usullaridan foydalanish. Math.floor usuli kasr sonini eng yaqin tamsayıga yaxlitlaydi, ya'ni. faqat kasr qismini tashlab yuboradi. Math.ceil kasr sonni eng yaqin butun songacha yaxlitlaydi. Math.round raqamni kasr qismining qiymatiga qarab yuqoriga yoki pastga aylantiradi. Agar kasr qismi 0,5 dan katta yoki teng bo'lsa, u holda yuqoriga, aks holda buklanish pastga tushadi.

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

2. toFixed (aniqlik) usuli yordamida. Bu usul sonning kasr qismini belgilangan aniqlikka yaxlitlaydi. Yuvarlama natijasi mag'lubiyat sifatida qaytariladi.

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

Agar raqamning aniqligini aniqlash uchun o'nli kasrlar etarli bo'lmasa, u nol bilan to'ldiriladi.

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

3. toPrecision usuli orqali. Bu usul ko'rsatilgan aniqlikdagi raqamni ifodalaydi. Shu bilan birga, u nafaqat kasrni, balki butun sonini ham yaxlitlashi mumkin. Bu usul, natijaga qarab, sobit nuqta yoki eksponensial shaklda olingan sonni ifodalashi mumkin.

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. NOT yoki OR mantiqiy operatorlaridan foydalanish.

// ikki tomonlama mantiqiy rad etish orqali konsol.log (~~ 7.9); // 7 // mantiqiy YoK yordamida nol bilan: console.log (7.9 ^ 0); // 7

Sonning butun va kasr qismi

Math.floor () usuli va parseInt () yordamida sonning butun sonini olishingiz mumkin:

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

Siz foiz (%) operatoridan foydalanib, sonning kasr qismini olishingiz mumkin. Bu operator birinchi raqamni ikkinchisiga bo'lish orqali olinadigan qoldiqni qaytaradi. Bunday holda, 1 raqami 2 sifatida ishlatilishi kerak.

Console.log (7.21% 1); // 0.20999999999999996 // 2 ta kasrga to'g'ri aniqlangan console.log ((7.21% 1) .toFixed (2)); // "0.21"

Bundan tashqari, kasr qismini hisob -kitoblar yordamida ham olish mumkin:

Var raqami = 7.21; var fraksiyonNumber = son - Math.floor (Math.abs (son)); console.log (fraksiyonNumber); // 0.20999999999999996

Bu raqam hatto bo'linadigan bo'ladimi

Siz foiz operatori yordamida raqam teng bo'linishini aniqlashingiz mumkin:

Var raqami = 9; // agar sonni 3 ga bo'lishning qolgan qismi 0 bo'lsa, ha, aks holda yo'q bo'lsa (raqam% 3 == 0) (console.log ("Raqam" + son + "3 ga bo'linadi);) else (konsol . log ("Raqam" + son + "3 ga bo'linmaydi);)

Raqamlarni formatlash

JavaScript -da toLocaleString () usuli sizga mintaqaviy (operatsion tizim) til sozlamalariga mos keladigan raqamni chiqishini formatlash imkonini beradi.

Masalan, raqamni tizimda sukut bo'yicha o'rnatilgan mintaqaviy standartlarga muvofiq formatlaylik:

Var raqami = 345.46; console.log (number.toLocaleString ()); // "345.46"

Masalan, raqamni Rossiyaning mintaqaviy standartlariga muvofiq formatlaylik (ru):

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

Bu usul raqamni valyuta sifatida formatlash uchun ham ishlatilishi mumkin:

Console.log ((2540.125) .toLocaleString ("ru-RU", (uslub: "valyuta", valyuta: "RUB")))); // "2 540.13 ₽" console.log ((89.3) .toLocaleString ("ru-RU", (uslub: "valyuta", valyuta: "USD")))); // "89.30 $" console.log ((2301.99) .toLocaleString ("ru-RU", (uslub: "valyuta", valyuta: "EUR")))); // "2,301,99 evro"

Raqamning foiz sifatida ifodalanishi:

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

Raqamni raqamlarga bo'ling (useGrouping xususiyatidan):

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

O'nli kasrdan keyin ma'lum sonli (2) raqamli raqamni chop eting:

Console.log ((1240.4564) .toLocaleString ("ru-RU", (minimumFractionDigits: 2, maksimalFractionDigits: 2)))); // "1 240.46"

Raqamlarni solishtirish

JavaScript raqamlarni solishtirish uchun quyidagi operatorlardan foydalanadi: == (teng) ,! = (Teng emas),> (kattaroq),< (меньше), >= (katta yoki teng),<= (меньше или равно).

Masalan, ikkita raqamni solishtiraylik:

Console.log (2> 3); // noto'g'ri konsol.log (5> = 3); // rost

Raqamlarni kasrli qismlar bilan solishtirganda, bu hisob -kitoblar paytida yuzaga kelishi mumkin bo'lgan xatolarni hisobga olish kerak.

Masalan, JavaScript -da raqamlar yig'indisi (0,2 + 0,4) 0,6 emas:

Console.log ((0,2 + 0,4) == 0,6); // yolg'on

Xatoliklar yuzaga keladi, chunki barcha hisoblar 2 -raqamli tizimda kompyuter yoki boshqa elektron qurilma yordamida amalga oshiriladi. Bular. har qanday xatti -harakatlarni bajarishdan oldin, kompyuter birinchi navbatda ifodada ko'rsatilgan sonlarni 2 ta sanoq sistemasiga aylantirishi kerak. Ammo, hech qanday kasrli kasr sonini 2 ta sanoq sistemasida aniq ifodalash mumkin emas.

Masalan, 0,25 10 raqami aynan ikkilik tizimga aylanadi.

0,125 × 2 = 0,25 | 0 0.25 × 2 = 0.5 | 0 0,5 × 2 = 1 | 1 0.125 10 = 0.001 2

Masalan, 0,2 10 raqamini faqat 2 aniqlikdagi aniqlik bilan 2 tizimga aylantirish mumkin:

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

Natijada, bu xatolar ikkita raqamning yig'indisini hisoblash va taqqoslash natijalariga ta'sir qiladi. Bular. Ma'lum bo'lishicha, aslida JavaScript bu yozuvni quyidagicha ko'radi:

0.6000000000000001==0.6

Raqamlarni kasr qismi bilan hisoblashda yoki ko'rsatishda siz har doim bajarilishi kerak bo'lgan aniqlikni ko'rsatishingiz kerak.

Masalan, toFixed () va toPrecision () usullari yordamida 2 ta kasrgacha bo'lgan raqamlarni solishtiring:

// usuli toFixed () console.log ((0,2 + 0,4) .toFixed (2) == (0,6) .toFixed (2)); // true // usuli toPrecision () console.log ((0,2 + 0,4) .toPrecision (2) == (0,6) .toPrecision (2)); // rost

Matematikaning asosiy operatsiyalari

JavaScript -da quyidagi matematik operatorlar mavjud: + (qo'shish), - (ayirish), * (ko'paytirish), / (bo'linish),% (modulli), ++ (ortish 1), - (1 ga kamayish).

6 + 3 // 9 6-3 // 3 6 * 3 // 18 6/3 // 2 6% 3 // 0, ya'ni. 6: 3 = 2 => 6-3 * 2 => dam olish (0) 5% 2 // 1, ya'ni. 5: 2 = 2 (.5) => 5-2 * 2 => dam olish (1) 7,3% 2 //1,3, ya'ni. 7.3: 2 = 3 (.65) => 7.3-2 * 3 => dam olish (1.3) //% operatsiyasining natijasi belgisi birinchi qiymatning belgisiga teng -9% 2.5 //-1.5 , ya'ni 9: 2,5 = 3 (.6) => 9-2,5 * 3 => dam olish (1,5) -9% -2,5 //-1,5, ya'ni. 9: 2,5 = 3 (.6) => 9-2,5 * 3 => dam olish (1,5) -2% 5 // -2, ya'ni. 2: 5 = 0 (.4) => 2-5 * 0 => dam olish (2) x = 3; konsol.log (x ++); // 3 -ni chop etadi, y -ni 4 -ni o'rnatadi, keyinchalik console.log (x); // 4 x = 3; console.log (++ x); // 4 ni o'rnatadi va x = 5 ni chop etadi; console.log (x--); // 5 -ni bosib chiqaradi, y -ni 4 -ni o'rnatadi, keyinchalik console.log (x); // 4 x = 5; console.log (- x); // 4 va chiqishlarni belgilaydi Bundan tashqari, JavaScript-da birlashtirilgan operatorlar mavjud: x + = y (x = x + y), x- = y (x = xy), x * = y (x = x * y), x / = y (x = x / y), x% = y (x = x% y). x = 3; y = 6; x + = y; konsol.log (x); // 9 x = 3; y = 6; x- = y; konsol.log (x); // - 3 x = 3; y = 6; x * = y; konsol.log (x); // 18 x = 3; y = 6; x / = y; konsol.log (x); //0,5 x = 3; y = 6; x% = y; konsol.log (x); // 3

Hisob -kitoblar ko'pincha kerakli diapazondan tashqarida bo'lgan natijalarni beradi. Natijada, siz bajarishingiz kerak JavaScript yaxlitlash ma'lum bir qiymatga.

Nega raqamlarni yaxlitlash kerak?

JavaScript butun sonlarni saqlamaydi, chunki ularning qiymatlari o'zgaruvchan nuqta raqamlari sifatida ko'rsatilgan. Ko'p kasrlarni sonli kasrlar soni bilan ifodalash mumkin emas, shuning uchun JavaScript quyidagi natijalarni berishi mumkin:

0.1 * 0.2; > 0.020000000000000004

Amalda, bu farq qilmaydi, chunki biz 2 kvintillionlik xato haqida gapiramiz. Biroq, bu valyuta qiymatlari, foizlar yoki fayl hajmini ifodalovchi raqamlar bilan ishlashda natijaga ta'sir qilishi mumkin. Shuning uchun, siz yoki ma'lum bir kasrli joyga qilishingiz kerak.

O'nli kasr sonlarini yaxlitlash

O'nli kasr sonini "qirqish" uchun toFixed () yoki toPrecision () usullaridan foydalaning. Ularning ikkalasi bitta dalilni oladi, bu natijaga kiritiladigan muhim va kasrli sonlar sonini ko'rsatadi:

  • agar toFixed () uchun hech qanday dalil ko'rsatilmagan bo'lsa, sukut bo'yicha 0, ya'ni kasrli joy yo'q; argumentning maksimal qiymati - 20;
  • toPrecision () uchun hech qanday dalil ko'rsatilmagan bo'lsa, raqam o'zgarmaydi.

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"

Eslatma

ToFixed () va toPrecision ikkalasi ham natijaning sonini emas, balki yumaloq chiziqli tasvirini qaytaradi. Bu shuni anglatadiki, randNum -ga yaxlitlangan qo'shish bitta raqamga emas, balki mag'lubiyatni birlashtirishga olib keladi:

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

Agar siz JavaScript -ni yuzinchi qismga yaqinlashtirishni xohlasangiz, parseFloat () dan foydalaning:

var randNum = 6.25; var rounded = parseFloat (randNum.toFixed (1)); console.log (yumaloq); > 6.3

toFixed () va toPrecision () ham ko'p sonli kasrlarni kesishning foydali usullari. Bu pul birliklarini ifodalovchi raqamlar bilan ishlashda foydalidir:

var butunNum = 1 var dollarCents = butunNum.toFixed (2); console.log (dollarCents); > "1.00"

E'tibor bering, agar aniqlik parametrida ko'rsatilganidan ko'p sonlar bo'lsa, toPrecision natijani ilmiy formatda qaytaradi:

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

O'nli kasrlarni yaxlitlashda xatolardan qanday qochish kerak

Ba'zi hollarda toFixed va toPrecision amalga oshiriladi JavaScript -ni yaxlitlash 5 va ko'proq emas:

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

Yuqoridagi misolda 1 emas, 1.01 bo'lishi kerak. Agar siz bu xatodan qochishingiz kerak bo'lsa, men eksponensial raqamlardan foydalanishni tavsiya qilaman:

funktsiya yumaloq (qiymat, o'nlik)

Ilova:

dumaloq (1.005.2); > 1.01

Agar sizga yaxlitlashdan ko'ra ishonchli echim kerak bo'lsa, u mavjud MDN.

Epsilon yaxlitlash

Muqobil usul JavaScript -ni o'ndan o'ngacha yaxlitlash ES6 da joriy qilingan ( JavaScript 2015 sifatida ham tanilgan). « Epsilon mashinasi»Ikkita o'zgaruvchan nuqta raqamlarini solishtirishda xatolarning o'rtacha chegarasini beradi. Yakunlashsiz taqqoslash quyidagi natijalarga olib kelishi mumkin:

0.1 + 0.2 === 0.3> noto'g'ri

Math.EPSILON funktsiyasida to'g'ri taqqoslash uchun ishlatilishi mumkin:

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

Funktsiya ikkita argumentni oladi: biri hisob -kitoblarni o'z ichiga oladi, ikkinchisi kutilgan (yumaloq) natijadir. Bu ikkita parametrni taqqoslashni qaytaradi:

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

Barcha zamonaviy brauzerlar ES6 matematik funktsiyalarini qo'llab -quvvatlaydi. Ammo agar siz eski brauzerlarda qo'llab -quvvatlashni ta'minlasangiz, unda siz polifillalarni ishlatishingiz kerak.

O'nli raqamlarni kesish

Yuqorida keltirilgan barcha usullar bajariladi JavaScript -ni o'ndan o'ngacha yaxlitlash... Ijobiy sonni ikkita o'nli kasrga qisqartirish uchun uni 100 ga ko'paytirish, yana kesish va natijani 100 ga bo'lish uchun sizga kerak:

funktsiya kesilgan (son) (qaytarish Math.trunc (son * 100) / 100;) kesilgan (3.1416)> 3.14

Agar sizga moslashuvchanroq narsa kerak bo'lsa, siz bitli operatordan foydalanishingiz mumkin:

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

Foydalanish:

var randInt = 35.874993; kesilgan (randInt, 3); > 35.874

Eng yaqin raqamga yaxlitlash

Amalga oshirish uchun JavaScript -ni butun songa yaxlitlash, Math.round () tomonidan ishlatiladi:

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

Eslab qoling " yarim qiymatlar".5 kabi yaxlitlangan.

Eng yaqin butun songa aylantiring

Agar siz yaxlitlashni xohlasangiz, Math.floor () usulidan foydalaning:

Math.floor (42.23); > 42 Math.floor (36.93); > 36

Yakunlash barcha raqamlar uchun bitta yo'nalishga ega, shu jumladan manfiy raqamlar. Buni cheksiz ko'p qavatli osmono'par bino deb tasavvur qilish mumkin, shu jumladan poydevor sathidan pastda ( manfiy sonlarni ifodalaydi). Agar siz 2 va 3 -qavat podvallari orasidagi liftda bo'lsangiz ( bu -2,5 qiymatiga to'g'ri keladi), Math.floor sizni -3 -qavatga olib boradi:

Math.floor (-2.5); > -3

Agar bundan qochish kerak bo'lsa, barcha zamonaviy brauzerlarda qo'llab -quvvatlanadigan Math.trunc () bilan JavaScript Math yaxlitlashdan foydalaning (bundan mustasno) IE / Edge):

Math.trunc (-41.43); > -41

MDN ham beradi Eski brauzerlarda va IE / Edge -da Math.trunc -ni qo'llab -quvvatlash uchun 3 qatorli polyfill.

Eng yaqin butun songacha yaxlitlang

Agar siz o'nli kasrlarni yaxlitlamoqchi bo'lsangiz, Math.ceil -dan foydalaning. Bu usulni cheksiz ko'tarilish deb ham hisoblash mumkin: Math.ceil har doim sizni qabul qiladi, bu raqam salbiy yoki ijobiy bo'lsin:

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

Eng yaqin songa yaxlitlash

Agar siz qiymatni 5 -sonning eng yaqin ko'paytmasiga aylantirishingiz kerak bo'lsa, raqamni 5 ga bo'linadigan funktsiyani yarating, uni yaxlitlang va natijani xuddi shu qiymatga ko'paytiring:

roundTo5 funktsiyasi (raqam) (Math.round (raqam / 5) * 5 ga qaytish)

Foydalanish:

roundTo5 (11); > 10

Agar siz JavaScript -ni ikkita raqamga aylantirishingiz kerak bo'lsa, siz funktsiyaga ham urug ', ham ko'plikni o'tkazishingiz mumkin:

roundToMultiple funktsiyasi (son, bir nechta) (Math.round (son / bir nechta) * bir nechta;)

Funktsiyadan foydalanish uchun yaxlitlanadigan raqamni va uning ko'pligiga qo'ng'iroqni kiriting:

var initialNumber = 11; var multiplikatori = 10; roundToMultiple (boshlang'ich raqam, ko'p); > 10;

Qiymatlarni faqat yuqoriga yoki pastga aylantirish uchun funktsiyadagi yumaloqni shift yoki pol bilan almashtiring.

O'tish oralig'i

Ba'zan siz x qiymatini olishingiz kerak, bu ma'lum bir chegarada bo'lishi kerak. Masalan, biz 1 dan 100 gacha bo'lgan qiymatga muhtojmiz, lekin 123 qiymatini olamiz. Buni tuzatish uchun min () dan foydalanish mumkin sonlarning eng kichikini qaytaradi) va maksimal ( ruxsat etilgan maksimal sonni qaytaradi).

Foydalanish:

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

Number sinfining funktsiyasi yoki kengaytmasini yaratishingiz mumkin.

Salom. Bugun, Javascript ustunida, JavaScript -da suzuvchi nuqta sonlarida o'nlik kasr sonini qanday o'rnatish kerakligini ko'rib chiqamiz. Masalan, siz chiqishda 3 ta kasr yoki faqat ikkitasini qoldirishingiz kerak.

Muammo: javascript kasrli joylar

Shunday qilib, biz oldimizda vazifa turibdi: hisoblash natijasi bor, unda kasrdan oldin va kasrdan keyin raqamlar bor. O'nli Aytaylik, natija shunga o'xshash 1538.9891200153. Ammo pulni olishda siz raqamni aks ettiruvchi raqamni olishingiz kerak, bu erda kasrlar o'nlik kasrdan oldin, keyin esa - kopek.

Bu muammoni hal qilishning bir necha yo'li mavjud.

1 -yechim: toFixed usuli yordamida javascript kasrli joylar

toFixed-bu yaxlitlash aniqligini (ya'ni kasrlar sonini) parametr sifatida qabul qilib, istalgan songa qo'llaniladigan o'rnatilgan JavaScript usuli.

Var soni = 1538.9891200153; raqam_str = son.toFixed (); // son_str = 1538; raqam_str = son.toFixed (2); //num_str=1538.98; raqam_str = son.toFixed (5); //num_str=1538.98912;

Bu funktsiyada aniqlik parametri 0 dan kam bo'lmasligi kerak (manfiy qiymatlarni qabul qilmaydi) va 20 dan oshmasligi kerak.

O'zgaruvchisiz ham qilishingiz mumkin, masalan:

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

2 -yechim: toPrecision usuli yordamida javascript kasrli joylar

Bu yechim bir xil o'rnatilgan javascript usuliga asoslangan. Bu usulning o'ziga xos xususiyati shundan iboratki, kirish sifatida qabul qilingan parametr aniqlikni (o'nlik kasrdan keyingi raqamlar sonini) emas, balki raqamlarning umumiy sonini (kasrdan oldin ham, keyin ham) bildiradi.

Var soni = 1538.9891200153; son_str = son.toPrecision (5); //num_str=1538.9; son_str = son.toPrecision (7); //num_str=1538.989;

O'nli nuqta yechimi: o'nli kasrlarning javascript soni

Agar siz kasrli kasrlarni butunlay olib tashlashingiz kerak bo'lsa, ya'ni kasr sonini butun songa aylantirishingiz kerak bo'lsa, siz Math sinfining funktsiyalaridan foydalanishingiz mumkin: yumaloq, shift va pol.
Dumaloq - yuqoriga yoki pastga yumalaydi (soniga qarab). Agar kasr nuqtasidan keyingi qiymat yarmidan ko'p bo'lsa, u pastga aylansa, yaxlitlanadi. Ya'ni, agar 0,51 bo'lsa, u 1 bo'ladi, agar 0,49 - 0 bo'lsa.

Shift - ingliz tilidan. shift har doim dumaloq bo'ladi.

Zamin - ingliz tilidan. zamin har doim pastga aylanadi.

Var soni = 1538.9891200153; num_str = Math.round (son); // son_str = 1539; num_str = Math.floor (son); // son_str = 1538; num_str = Math.ceil (son); // son_str = 1539;

Hammasi shu. Umid qilamanki, bu xabar muammoni hal qilishga yordam berdi. Agar biror narsa ishlamagan bo'lsa - "Mutaxassisga savol bering" yashil tugmasi yordamida yoki izohlarda savollar bering.

Salom JavaScript -ni sevuvchilar. Siz allaqachon tushungansizki, bu til juda g'ayrioddiy va har bir bo'limda o'ziga xos xususiyatlari va g'ayrioddiy texnik echimlari bilan ajralib turadi. Shuning uchun, bugungi maqola "JavaScript yaxlitlash" mavzusiga bag'ishlangan.

Mavjud maqolani o'qib bo'lgach, siz nima uchun raqamlarni yaxlitlash kerakligini, js -dagi qaysi usul va xususiyatlar bu funktsiyani bajarishini, shuningdek 0 ga bo'linish qanday ajralib turishini bilib olasiz. material va har bir harakatni batafsil tasvirlab bering. Endi o'rganishni boshlaylik!

Raqamlar haqida muhim eslatmalar

Birinchidan, jsda barcha turdagi sonlar (kasrlar va butun sonlar) turiga tegishli ekanligini unutmang Raqam... Bundan tashqari, ularning hammasi 64 bitli, chunki ular "ikki tomonlama aniqlik" formatida saqlanadi, bu IEEE-754 standarti sifatida ham tanilgan.

Raqamli o'zgaruvchilar odatiy tarzda yaratilgan:

var numb = 35; // natural raqam

var drob = 0,93; // kasrli tasvir

var numb16 = 0xFF; // o'n oltilik sanoq tizimi

Boshqa raqamli tasvirlarni ham qo'llab -quvvatlaydi. Shunday qilib, siz hali ham o'zgaruvchan nuqta raqamlarini yaratishingiz mumkin (ular ba'zan "ilmiy formatda raqamlar" deb ham ataladi).

Juda qiziqarli usulni qo'llab -quvvatlaydi toLocaleString (), ECMA 402 da yozilgan spetsifikatsiyalarga muvofiq barcha raqamli parametrlarni formatlaydi. Buning yordamida muloqot oynasida katta raqamlar, telefon raqamlari, valyutalar va hatto foizlar chiroyli tarzda ko'rsatiladi.

var soni = 714000.80;

ogohlantirish (num.toLocaleString ());

Raqamli elementlar bilan ishlash uchun butun global ob'ekt har xil turdagi matematik funktsiyalar bilan ta'minlangan, ularning nomi Matematika.

Bundan tashqari, sonli qiymatlarni yaxlit sonlar, o'nlik, yuzlik va boshqalarga yaxlitlaydigan boshqa usullar mavjud. Keling, ularning hammasini batafsil ko'rib chiqaylik.

Ajoyib va ​​kuchli matematika

Global matematika ob'ekti matematik va trigonometrik funktsiyalarni o'z ichiga oladi. Bu juda foydali ob'ekt va ko'pincha raqamli ma'lumotlar bilan ishlashda ishlab chiquvchilarga yordam beradi.

Boshqa platformalarda matematikaga o'xshashliklar mavjud. Masalan, Java va C #kabi mashhur tillarda Math - bu bir xil standart funktsiyalarni qo'llab -quvvatlaydigan sinf. Ko'rib turganingizdek, bu asbob haqiqatan ham ajoyib va ​​kuchli.

Endi men aniq yaxlitlash usullaridan o'tib, ular haqida batafsil gaplashmoqchiman.

Math.floor ()

Men boshlayman Matematika.pol... Usulning nomiga e'tibor bering. Mantiqan, biz yaxlitlash haqida gapirayotganimiz va "pol" so'zining so'zma -so'z tarjimasi "pol" degan ma'noni anglatsa, bu vosita qayta ishlangan qiymatlarni pastga aylantiradi.

Bu funktsiyadan foydalangan holda qayta ishlangan raqam o'zgarishsiz qolishi ham mumkin. Buning sababi, yaxlitlash qat'iy bo'lmagan tengsizlik bo'yicha amalga oshiriladi (<=). Таким образом, при отработке этой строчки кода:

ogohlantirish (Math.floor (4.5));

javob 4 raqami bo'ladi.

Math.ceil ()

Yana, ismga qarang (shu tarzda, material tezroq so'riladi). Agar kimdir bilmasa, shift shiftni anglatadi. Bu shuni anglatadiki, raqamli ma'lumotlar bo'sh tengsizlik yordamida yaxlitlanadi (> =).

ogohlantirish (Math.ceil (4.5));

Siz taxmin qilganingizdek, javob 5 raqami bo'ladi.

Math.round ()

Bu usul kasr sonni eng yaqin butun songa yaxlitlaydi. Shunday qilib, agar kasr qismi inklyuziv bo'lmagan 0 dan 0,5 gacha bo'lsa, unda yaxlitlash sodir bo'ladi. Va agar kasr qismi 0,5 dan keyingi butun songacha bo'lsa, u katta songacha yaxlitlanadi.

ogohlantirish (Math.round (4.5));

Umid qilamanki, hamma to'g'ri javobni o'ylab topdi yoki aytdi - 5.

Yana bir nechta usul

JavaScript -da, shuningdek, raqamli tasvirlarni yaxlitlash bilan shug'ullanadigan boshqa ikkita usul mavjud. Biroq, ular biroz boshqacha.

Kabi asboblar haqida bo'ladi toFixed () va toPrecision ()... Ular faqat yaxlitlash uchun emas, balki ma'lum belgilarga aniqligi uchun ham javobgardir. Keling, chuqurroq qazaylik.

toFixed ()

Ushbu mexanizm yordamida siz qancha o'nlik kasrlarga yaxlitlash kerakligini belgilashingiz mumkin. Usul natijani mag'lubiyat sifatida qaytaradi. Quyida men uch xil variantli variantni biriktirdim. Olingan javoblarni tahlil qiling.

var soni = 5656.9393;

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

document.writeln (soni tuzatilgan (2)); // 5656.94

document.writeln (soni tuzatilgan (7)); // 5656.9393000

Ko'rib turganingizdek, agar siz dalil ko'rsatmasangiz, toFixed ()) kasr qiymatini yaxlitlaydi. butunga raqamlar. Uchinchi qator yumaloqlanadi 2 belgigacha, va to'rtinchisida - "7" parametri tufayli yana uchta 0 qo'shildi.

toPrecision ()

Bu usul biroz boshqacha tarzda ishlaydi. Dalil o'rniga siz bo'sh joy qoldirishingiz yoki parametr o'rnatishingiz mumkin. Biroq, ikkinchisi vergulni e'tiborsiz qoldirgan holda, raqamlarni belgilangan raqamlarga yaxlitlaydi. Mana, oldingi misoldan qayta yozilgan dastur natijalari:

var soni = 5656.9393;

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

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

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

Jsda 0 ga bo'linish

Matematika darslaridan bilganingizdek, siz nolga bo'linmaysiz. Bu qoida dasturlash tillarini yaratuvchilarining ko'pchiligi tomonidan asos qilib olingan. Shuning uchun, nolga bo'linganda, barcha dasturlar xato hosil qiladi.

Biroq, JavaScript bu erda ham ajralib turardi. Shunday qilib, bunday operatsiyani bajarish paytida hech qanday xato xabari ko'rinmaydi ... chunki bunday operatsiya qaytadi "Cheksizlik"!

Nega bunday? Xuddi shu matematik fanlardan bilganingizdek, bo'luvchi qanchalik kichik bo'lsa, shuncha ko'p bo'ladi. Shuning uchun prototipga yo'naltirilgan ushbu tilni yaratuvchilar shablonlardan voz kechib, o'z yo'llari bilan borishga qaror qilishdi.

Infinity qiymatiga birinchi marta duch kelganlar uchun men quyida uning xususiyatlarini tushuntirdim.

Cheksizlik - cheksizlikni anglatadi va matematik belgiga to'liq mos keladi.

Bu salbiy bo'lishi mumkin. Arifmetik operatorlar bilan ishlashning barcha standart qoidalari ham saqlanib qolgan.

ogohlantirish (12/0); // Cheksizlik

ogohlantirish (12.34 / 0); // Cheksizlik

ogohlantirish (-3 / 0); // -Cheksizlik

Bu, ehtimol, va tugatish. Agar sizga nashr yoqqan bo'lsa, mening blogimga obuna bo'lishni unutmang. Qiziqarli maqolalarga havolalar bilan ochko'z bo'lmang va ularni do'stlaringiz bilan baham ko'ring. Hayr hayr!