Loading...

Сандар

Сандар

 

Заманбап JavaScriptте сандардын эки түрү бар:

  1. JavaScript'те кадимки сандар 64-бит IEEE-754 форматында сакталат , ал "кош тактык калкыма чекиттүү сандар" деп да аталат. Бул биз көбүнчө колдоно турган сандар. Биз бул бөлүмдө алар жөнүндө сөз болот.
  2. BigIntсандар ыктыярдуу узундуктагы бүтүн сандар менен иштөөгө мүмкүндүк берет. Алар сейрек талап кылынат жана андан чоң же андан азыраак баалуулуктар менен иштөө зарыл болгон учурларда колдонулат . Сандар сейрек талап кылынгандыктан , биз аларды өзүнчө BigInt бөлүмүндө карап чыгабыз .(253-1)-(253-1)BigInt

Бул бөлүмдө биз сандардын биринчи түрүн гана карайбыз: типтеги сандар number. Келгиле, алар менен JavaScriptте кантип иштөөнү тереңирээк карап көрөлү.

Санды жазуу жолдору

Элестеткиле, 1 миллиард деген санды жазышыбыз керек. Эң айкын жолу:

@A@let billion = 1000000000;@A@

Бирок реалдуу жашоодо биз, адатта, көп нөлдөрдүн жазуусун калтырабыз, анткени ката кетирүү оңой. Кыскартылган белги 7 миллиард 300 миллионго "1млрд"окшош болушу мүмкүн. "7.3млрд"Бул принцип бардык чоң сандар үчүн иштейт.

JavaScript'те сиз тамганы "e"санды кыскартуу үчүн колдоно аласыз. Ал санга кошулат жана көрсөтүлгөн нөлдөрдүн санын алмаштырат:

@A@let billion = 1e9;  // 1 миллиард, буквально: 1 и 9 нулей

alert( 7.3e9 );  // 7.3 миллиардов (7,300,000,000)@A@

Башкача айтканда, "e"нөлдөрдүн көрсөтүлгөн саны менен бир санды 1ге көбөйтүү операциясын аткарат.

@A@1e3 = 1 * 1000
1.23e6 = 1.23 * 1000000@A@

Эми өтө кичинекей нерсе жазалы. Мисалы, 1 микросекунд (секунданын миллиондон бири):

@A@let ms = 0.000001;@A@

Микросекундду кыскартылган түрдө жазуу бизге жардам берет "e".

@A@let ms = 1e-6; // шесть нулей, слева от 1@A@

Эгерде биз нөлдөрдүн санын эсептесек 0.000001, алардын саны 6 болот, албетте, туура жазуу 1e-6.

Башкача айтканда, кийинки терс сан "e"нөлдөрдүн көрсөтүлгөн саны менен 1ге бөлүүнү билдирет:

@A@// 1 делится на 1 с 3 нулями
1e-3 = 1 / 1000 (=0.001)
// 1.23 делится на 1 с 6 нулями
1.23e-6 = 1.23 / 1000000 (=0.00000123)@A@

Он алтылык, экилик жана сегиздик сандар

Он алтылык сандар JavaScriptте түстөрдү, символдорду коддоону жана башкаларды көрсөтүү үчүн кеңири колдонулат. Албетте, кыска жазуу стили бар: 0xандан кийин сан.

Мисалы:

@A@alert( 0xff ); // 255
alert( 0xFF ); // 255 (то же самое, регистр не имеет значения@A@)

Экилик жана сегиздик сандар сыяктуу жалпы эмес, бирок алар 0bэкилик жана 0oсегиздик сандар үчүн да колдоого алынат:

@A@let a = 0b11111111; // бинарная форма записи числа 255
let b = 0o377; // восьмеричная форма записи числа 255
alert( a == b ); // true, с двух сторон число 255@A@

Мындай колдоого ээ болгону 3 сан системасы бар. Башка сан системалары үчүн функцияны колдонууну сунуштайбыз parseInt(бул бөлүмдө кийинчерээк талкууланат).

toString(негиз)

Метод сан системасындагы num.toString(base)сандын саптык көрүнүшүн кайтарат .numbase

Мисалы:

@A@let num = 255;
alert( num.toString(16) );  // ff
alert( num.toString(2) );   // 11111111@A@

base2чейин өзгөрүшү мүмкүн 36(демейки 10).

Көбүнчө колдонулат:

  • base=16 - түстү он алтылык көрсөтүү, символдорду коддоо ж.б. үчүн сандар 0..9же болушу мүмкүн A..F.

  • base=2 - көбүнчө биттик операцияларды оңдоо үчүн колдонулат, сандар 0же 1.

  • base=360..9 — максималдуу база, цифралар же болушу мүмкүн A..Z. Башкача айтканда, санды көрсөтүү үчүн бүт латын алфавити колдонулат. Кызыктуусу, сиз 36чоң сандык идентификатордун стенографиялык көрүнүшүн алуу үчүн -digit сан системасын колдоно аласыз. Мисалы, кыска шилтеме түзүү. Бул үчүн, аны жөн гана 36-бит санаруу системасына айландырыңыз:

    @A@alert( 123456..toString(36) ); // 2n9c@A@
Методду чакыруу үчүн эки чекит

Көңүл бургула! Эки чекит 123456..toString(36)ката эмес. Эгерде жогорудагы мисалдагыдай эле санга түздөн-түз ыкманы чакыруу керек болсо , анда сандан кийин toStringэки чекит коюшубуз керек ...

Эгерде биз бир чекит коё турган болсок: 123456.toString(36), анда бул ката болот, анткени JavaScript синтаксиси биринчи чекиттен кийин ондук бөлүк башталат деп болжолдойт. Эгерде сиз эки чекит койсоңуз, анда JavaScript ондук бөлүк жок экенин түшүнөт жана ыкма башталат.

катары да жазылышы мүмкүн (123456).toString(36).

тегеректөө

Сандар менен иштөөдө кеңири колдонулган операциялардын бири – тегеректөө.

JavaScript бир нече камтылган тегеректөө функцияларына ээ:

Math.floor

Тегеректөө: , жана - 3.1болот .3-1.1-2

Math.ceil

Толуктоо: , жана - 3.1болот .4-1.1-1

Math.round

Эң жакын бүтүн санга тегеректөө: , - жана - 3.1болот .33.64-1.1-1

Math.trunc(Internet Explorerде колдоого алынбайт)

Бөлчөк бөлүгүн тегеректөөсүз алып салат: , жана - 3.1болот .3-1.1-1

Төмөндө тегеректөө функцияларынын ортосундагы айырмачылыктар менен таблица келтирилген:

  Math.floor Math.ceil Math.round Math.trunc
3.1 3 4 3 3
3.6 3 4 4 3
-1.1 -2 -1 -1 -1
-1.6 -2 -1 -2 -1

Бул функциялар ондук бөлүктү иштетүүнүн бардык мүмкүн болгон жолдорун камтыйт. n-огоЭгер санды ондук сандын санына чейин тегеректөө керек болсочы ?

Мисалы, бизде бар 1.2345жана биз бир гана санды калтырып, 2 ондук бөлүккө чейин тегеректегибиз келет 1.23.

Эки чечим бар:

  1. Көбөйтүү жана бөлүү.

    Мисалы, санды экинчи ондук орунга чейин тегеректөө үчүн, биз санды көбөйтүп 100, тегерек функцияны чакырып, кайра бөлө алабыз.

    @A@let num = 1.23456;
    
    alert( Math.floor(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23@A@
  2. toFixed(n) ыкмасы санды nондук орунга тегеретет жана натыйжанын сап көрүнүшүн кайтарат.

    @A@let num = 12.34;
    alert( num.toFixed(1) ); // "12.3"@A@

    Методго окшош маанини өйдө жана ылдый жакынкы санга тегеретет Math.round:

    @A@let num = 12.36;
    alert( num.toFixed(1) ); // "12.4"@A@

    Натыйжа toFixedсап экенин эске алыңыз. Эгерде ондук бөлүк керектүүдөн кыска болсо, саптын аягына нөлдөр кошулат:

    @A@let num = 12.34;
    alert( num.toFixed(5) ); // "12.34000", добавлены нули, чтобы получить 5 знаков после запятой@A@

    Натыйжадагы маанини унардык оператор аркылуу санга айландырсак болот +же Number(), мисалы, унардык оператор менен: +num.toFixed(5).

Туура эмес эсептөөлөр

JavaScript ичинде сан 64-бит IEEE-754 форматы катары көрсөтүлөт . Санды сактоо үчүн 64 бит колдонулат: алардын 52си цифраларды сактоо үчүн, 11и ондук чекиттин ордун сактоо үчүн, ал эми бир бит белги үчүн сакталган.

Эгер сан өтө чоң болсо, ал 64 биттик сактагычтан ашып кетет, JavaScript чексиздикти кайтарат:

@A@alert( 1e500 ); // Infinity@A@

JavaScript'те сандар менен иштөөдө эң кеңири таралган ката бул тактыкты жоготуу.

Бул (туура эмес!) салыштырууну кара:

@A@alert( 0.1 + 0.2 == 0.3 ); // false@A@

Ооба, ооба, сумма бирдей 0.1эмес .0.20.3

Кызык! Анда эмесе 0.3?

@A@alert( 0.1 + 0.2 ); // 0.30000000000000004@A@

О! Бул жерде жөн эле туура эмес салыштырууга караганда алда канча көп кесепеттер бар. $0.10Элестеткиле, сиз онлайн дүкөн жасап жатасыз жана коноктор жана үчүн 2 позициядан буйрутма түзүшөт $0.20. Акыркы буйрук болот $0.30000000000000004. Бул бардыгы үчүн сюрприз болот.

Бирок эмне үчүн бул болуп жатат?

Сан эстутумда экилик түрдө, биттердин ырааттуулугу катары сакталат - бирдик жана нөл. Бирок ондук системада жөнөкөй көрүнгөн , сыяктуу бөлчөктөр чындыгында бинардык формадагы чексиз бөлчөк болуп саналат 0.1.0.2

Башка сөз менен айтканда, бул эмне 0.1? Бул онго бөлүнгөн бирдик - 1/10ондон бир. Ондук жазууда мындай сандар үчтөн бирине салыштырганда оңой көрсөтүлөт: 1/3, ал чексиз бөлчөккө айланат 0.33333(3).

Бөлүү 10ондук санда жакшы иштеши кепилдикке алынат, бирок менен бөлүү 3андай эмес. Ушул эле себептен улам, бинардык системада бөлүү сөзсүз 2иштейт, бирок 1/10чексиз бөлчөккө айланат.

JavaScriptте экилик системанын жардамы менен 0,1 же 0,2 так маанилерин сактоого эч кандай жол жок, ондук санда үчтөн бир бөлүгүн сактоонун жолу жок.

IEEE-754 сан форматы бул маселени мүмкүн болгон эң жакын санга тегеректөө аркылуу чечет. Тегеректөө эрежелери, адатта, бул "кичинекей тактык жоготууларын" көрүүгө мүмкүндүк бербейт, бирок ал бар.

Мисал:

@A@alert( 0.1.toFixed(20) ); // 0.10000000000000000555@A@

Ал эми 2 санды жыйынтыктаганда алардын «так эместиги» да жыйынтыкталат.

Ошондуктан 0.1 + 0.2- бул чындыгында эмес 0.3.

JavaScript гана эмес

Калыстык үчүн, калкыма чекиттик сандар үчүн эсептөөлөрдүн тактыгындагы ката IEEE 754 форматын колдонгон башка тилдерде, анын ичинде PHP, Java, C, Perl, Ruby тилдеринде сакталып калганын белгилейбиз.

Маселени айланып өтүүгө болобу? Албетте, эң ишенимдүү жол - бул toFixed(n) ыкмасын колдонуу менен жыйынтыкты тегеректөө :

@A@let sum = 0.1 + 0.2;
alert( sum.toFixed(2) ); // 0.30@A@

Метод toFixedар дайым сапты кайтарарын унутпаңыз. Бул натыйжа ондук бөлүктөгү цифралардын саны менен болорун кепилдейт. Бул онлайн дүкөндө бааларды форматтоо үчүн да ыңгайлуу $0.30. Башка учурларда +, сапты санга айландыруу үчүн унардык операторду колдоно аласыз:

@A@let sum = 0.1 + 0.2;
alert( +sum.toFixed(2) ); // 0.3@A@

Ошондой эле, сиз аны бүтүн санга азайтуу үчүн, аны убактылуу 100гө (же андан көпкө) көбөйтүп, математиканы аткарып, анан кайра бөлсөңүз болот. Бүтүн сандарды кошуу менен биз катаны азайтабыз, бирок ал дагы эле акыркы бөлүмдө көрүнөт:

@A@alert( (0.1 * 10 + 0.2 * 10) / 10 ); // 0.3
alert( (0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001@A@

Ошентип, көбөйтүү/бөлүү ыкмасы катаны азайтат, бирок аны толук чечпейт.

Кээде фракциялардан толугу менен баш тартууга аракет кылсаңыз болот. Мисалы, биздин интернет дүкөндө доллардын ордуна центти колдоно баштасак. Бирок 30% арзандатууну колдонсок эмне болот? Иш жүзүндө фракциядан толук кутула албайбыз. Керек болгондо куйруктарды кесүү үчүн жөн гана тегеректөө колдонуңуз.

күлкүлүү мисал

Аны аткарууга аракет кылыңыз:

@A@// Привет! Я – число, растущее само по себе!
alert( 9999999999999999 ); // покажет 10000000000000000@A@

Себеби бир эле - тактыгын жоготуу. Санга бөлүнгөн 64 биттин ичинен цифралар 52 битке чейин ээлейт, калган 11 бит ондук чекиттин ордун сактайт жана бир бит белги болуп саналат. Демек, сандар үчүн 52 бит жетишсиз болсо, анда төмөнкү сандар жазуу учурунда жок болот.

Котормочу ката кетирбейт, бирок натыйжада биз жогорудагы мисалдан көрүп турган "бир эле сан эмес" болот. Алар айткандай: «колумдан келишинче жаздым».

эки нөл

Сандардын ички чагылдырылышынын дагы бир күлкүлүү натыйжасы эки нөлдүн болушу: 0жана -0.

Себеби, белги бир бит менен берилген, ошондуктан каалаган сан оң же терс, анын ичинде нөл болушу мүмкүн.

Көпчүлүк учурларда, бул жүрүм-турум көрүнбөйт, анткени JavaScriptдеги операторлор аларга бирдей мамиле кылышат.

Текшерүүдө: isFinite жана isNaN

Ошол өзгөчө сандык баалуулуктарды эстейсизби?

  • Infinity(жана -Infinity) – бул математикалык чексиздик ∞ сыяктуу кыймылдаган өзгөчө сандык маани.
  • NaNкатаны билдирет.

Бул сандык маанилердин түрү бар number, бирок алар "жөнөкөй" сандар эмес, ошондуктан аларды текшерүү үчүн функциялар бар:

  • isNaN(value)маанини санга которот жана анын бар-жогун текшерет NaN:

    @A@alert( isNaN(NaN) ); // true
    alert( isNaN("str") ); // true@A@

    Бизге бул өзгөчөлүк керекпи? Салыштыра албайбызбы === NaN? Тилекке каршы жок. Баалуулук NaNуникалдуу болуп саналат, анткени ал башка эч нерсеге, атүгүл өзүнө тең эмес:

    @Aalert( NaN === NaN ); // false@A@
  • isFinite(value)аргументти санга айлантат жана trueал кадимки сан болсо кайтарат, б.а. эмес NaN/Infinity/-Infinity:

    @A@alert( isFinite("15") ); // true
    alert( isFinite("str") ); // false, потому что специальное значение: NaN
    alert( isFinite(Infinity) ); // false, потому что специальное значение:@A@ Infinity

Кээде isFiniteсапта сан бар-жогун текшерүү үчүн колдонулат:

@A@let num = +prompt("Enter a number", '');

// вернёт true всегда, кроме ситуаций, когда аргумент - Infinity/-Infinity или не число
alert( isFinite(num) );@A@

Эсиңизде болсун, бош сап 0бардык сандык функцияларда, анын ичинде isFinite.

Number.isNaNЖанаNumber.isFinite

Number.isNaN жана Number.isFinite ыкмалары isNaNжана функцияларынын катаал версиялары isFinite. Алар аргументти санга айландырышпайт, тескерисинче - алар адегенде аргументтин сан экенин текшеришет (түргө тиешелүүбү number).

  • Number.isNaN(value)trueаргумент типте болсо numberгана кайтарат NaN. Бардык башка учурларда, ал кайтып келет false.

    @A@alert( Number.isNaN(NaN) ); // true
    alert( Number.isNaN("str" / 2) ); // true
    
    // Обратите внимание на разный результат:
    alert( Number.isNaN("str") ); // false, так как "str" является строкой, а не числом
    alert( isNaN("str") ); // true, так как isNaN сначала преобразует строку "str" в число и в результате преобразования получает NaN@A@
  • Number.isFinite(value)trueаргумент типте болсо numberжана андай эмес болсо гана кайтарат NaN/Infinity/-Infinity. Бардык башка учурларда, ал кайтып келет false.

    @A@alert( Number.isFinite(123) ); // true
    alert( Number.isFinite(Infinity) ); // false
    alert( Number.isFinite(2 / 0) ); // false
    // Обратите внимание на разный результат:
    alert( Number.isFinite("123") ); // false, так как "123" является строкой, а не числом
    alert( isFinite("123") ); // true, так как isFinite сначала преобразует строку "123" в число 123@A@

Функциялардын Number.isNaNкөбүрөөк "туура" версияларын карабашыңыз керек жана . Бул ар кандай тапшырмалар үчүн кошумча куралдар.Number.isFiniteisNaNisFinite

СалыштырууObject.is

сыяктуу баалуулуктарды салыштырган Object.is атайын ыкмасы бар ===, бирок эки өзгөчө кырдаалда ишенимдүүрөөк болот:

  1. менен иштейт NaNObject.is(NaN, NaN) === true, бул жерде жакшы.
  2. Баалуулуктар 0жана -0башка: Object.is(0, -0) === false, бул сейрек колдонулат, бирок техникалык жактан бул баалуулуктар ар түрдүү.

Бардык башка учурларда Object.is(a, b)ал бирдей a === b.

Салыштыруунун бул жолу көбүнчө JavaScript спецификациясында колдонулат. Ички алгоритм так дал келүү үчүн 2 маанини салыштыруу керек болгондо, ал Object.is(Define SameValue ) колдонот.

parseInt жана parseFloat

+Сиз же колдонсоңуз болот Number(). Эгерде сап так сан болбосо, анда натыйжа болот NaN:

@A@alert( +"100px" ); // NaN@A@

Жалгыз саптын башында жана аягында боштуктар, алар этибарга алынбайт.

Чыныгы жашоодо биз көп учурда өлчөө бирдиги бар баалуулуктарга туш болобуз, мисалы, "100px"же "12pt"CSS. Ошондой эле, көптөгөн өлкөлөрдө акча белгиси номиналдан кийин жазылат "19€". Андай саптардан кантип сандык маани алабыз?

parseIntБул үчүн, ошондой эле бар parseFloat.

Алар бир катардан санды "окушат". Окуу учурунда ката кетсе, катага чейин алынган номерди кайтарышат. Функция parseIntбүтүн санды кайтарат, бирок parseFloatкалкыма чекит санын кайтарат:

@A@alert( parseInt('100px') ); // 100
alert( parseFloat('12.5em') ); // 12.5
alert( parseInt('12.3') ); // 12, вернётся только целая часть
alert( parseFloat('12.3.4') ); // 12.3, произойдёт остановка чтения на второй точке

Функциялар эч кандай цифраларды окуй албаса parseInt/parseFloatкайтып келет :NaN

 
 
@A@alert( parseInt('a123') ); // NaN, на первом символе происходит остановка чтения@A@
Экинчи аргументparseInt(str, radix)

Функциянын parseInt()кошумча экинчи параметри бар. Ал санауу системасын аныктайт, ошондуктан parseIntал он алтылык сандар, экилик сандар ж.б. бар саптарды окуй алат:

@A@alert( parseInt('0xff', 16) ); // 255
alert( parseInt('ff', 16) ); // 255, без 0x тоже работает

alert( parseInt('2n9c', 36) ); // 123456@A@

Башка математикалык функциялар

JavaScript ар кандай математикалык функцияларды жана константаларды камтыган орнотулган Math объектисине ээ.

Бир нече мисал:

Math.random()

0 (кошкондо) жана 1 (бирок 1ди кошпогондо) ортосундагы псевдококустук санды кайтарат

@A@alert( Math.random() ); // 0.1234567894322
alert( Math.random() ); // 0.5435252343232
alert( Math.random() ); // ... (любое количество псевдослучайных чисел)

Math.max(a, b, c...)/Math.min(a, b, c...)@A@

Берилген аргументтердин эң чоң/эң аз санын кайтарат.

@A@alert( Math.max(3, 5, -10, 0, 1) ); // 5
alert( Math.min(1, 2) ); // 1

Math.pow(n, power)@A@

Көтөрүлгөн санды nкүчкө кайтаратpower

@A@alert( Math.pow(2, 10) ); // 2 в степени 10 = 1024@A@

Объекттин көптөгөн функциялары жана константалары бар, анын ичинде тригонометриялык функциялар, көбүрөөк маалымат алуу үчүн MathMath объектисинин документтерин караңыз .

Бардыгы

Көп нөлү бар сандарды жазуу үчүн:

  • Сандардын кыска формасын колдонуңуз, "e"нөлдөрдүн көрсөтүлгөн саны менен. Мисалы: 123e6бул 1236 нөл менен 123000000.
  • Терс сандан кийинки "e"сан нөлдөрдүн көрсөтүлгөн саны менен 1ге бөлүнөт. Мисалы: 123e-6бул 0.000123123миллиондуктар).

Башка сан системалары үчүн:

  • 0xСиз бир эле учурда он алтылык ( ), сегиздик ( 0o) жана экилик ( 0b) системаларында сандарды жаза аласыз
  • parseInt(str, base)белгиленген сан системасына ылайык сапты бүтүн санга айлантат: 2 ≤ base ≤ 36.
  • num.toString(base)көрсөтүлгөн сан системасында сап катары санды билдирет base.

NaNжана текшерүү үчүн Infinity:

  • isNaN(value)аргументти санга айлантат жана анын бар-жоктугун текшеретNaN
  • Number.isNaN(value)аргументтин сан экенин текшерет, эгер ошондой болсо, анын бар-жогун текшеретNaN
  • isFinite(value)аргументти санга которот жана ал эмес экенин текшеретNaN/Infinity/-Infinity
  • Number.isFinite(value)аргументтин сан экендигин текшерет, эгер андай болсо, ал эмес экенин текшеретNaN/Infinity/-Infinity

Типтин 12ptжана 100pxсандын маанилерин айландыруу үчүн:

  • Сапты санга "жумшак" айландыруу үчүн колдонуңуз parseInt/parseFloat, бул функциялар ката пайда болгонго чейин катардан санды окуйт.

Бөлчөктөр үчүн:

  • Тегеректөө Math.floorMath.ceilMath.truncMath.roundже колдонуңуз num.toFixed(precision).
  • Бөлчөктөр менен иштөөдө тактык жоголот экенин унутпаңыз.

Көбүрөөк математикалык функциялар:

  • Математика объектиси үчүн документация . Китепкана кичинекей, бирок эң маанилүү нерселердин бардыгын камтыйт.

Tasks

маанилүүлүгү: 5

Эки санды сураган скрипт түзүңүз (кошумчаны колдонуңуз), андан кийин алардын суммасын көрсөтөт.

Демо иштетүү

PS Түрлөр менен иштөөдө "тузак" бар.

чечим
маанилүүлүгү: 4

Math.roundжана ыкмалары toFixed, документацияга ылайык, жакынкы бүтүн санга тегеректөө: 0..4тегеректелген ылдый, ал эми 5..9өйдө.

Мисалы:

@A@alert( 1.35.toFixed(1) ); // 1.4@A@

Бирок эмне үчүн төмөндөгү мисалда 6,35 6,3кө чейин тегеректелет?

 
 
@A@alert( 6.35.toFixed(1) ); // 6.3@A@

Кантип туура тегеректөө керек 6.35?

чечим
маанилүүлүгү: 5

readNumberКелүүчү киргенге чейин сандык маанини сурай турган функция түзүңүз .

Функция сандык маанини кайтарышы керек.

Ошондой эле колдонуучуга бош сапты жөнөтүү же Жокко чыгарууну чыкылдатуу менен киргизүү процессин токтотууга уруксат беришиңиз керек. Бул учурда, функция кайтып келиши керек null.

Демо иштетүү

Тапшырма үчүн тесттер менен кумкоргонду ачыңыз.

чечим
маанилүүлүгү: 4

Бул цикл чексиз. Эч качан бүтпөйт, эмне үчүн?

@A@let i = 0;
while (i != 10) {
  i += 0.2;
}@A@
чечим
маанилүүлүгү: 2

Камтылган ыкма Math.random()кокустук санды 0(кошкондон) чейин кайтарат 1(бирок 1)

чейин (бирок камтылган эмес ) random(min, max)кокустук калкыма чекиттин санын түзгөн функцияны жазыңыз .minmaxmax

Функциянын иштешинин мисалы:

@A@alert( random(1, 5) ); // 1.2345623452
alert( random(1, 5) ); // 3.7894332423
alert( random(1, 5) ); // 4.3435234525@A@
чечим
маанилүүлүгү: 2

чейин ( кошкондо ) кокус бүтүн сандыrandomInteger(min, max) түзүүчү функцияны жазыңыз .minmax

Интервалдагы каалаган сан min..maxбирдей ыктымалдуулук менен пайда болушу керек.

Функциянын иштешинин мисалы:

@A@alert( randomInteger(1, 5) ); // 1
alert( randomInteger(1, 5) ); // 3
alert( randomInteger(1, 5) ); // 5@A@

Сиз мурунку маселенин чечүү жолун колдоно аласыз .