Аппараттық және бағдарламалық қамтамасыз етуді орнату

Жою - JavaScript-те қалдығы бар бүтін бөлу керек пе? JavaScript Js ішіндегі сандарды дөңгелектеу әдістері бөлшек бөлігі жоқ саны.


Сабағымыздың бұл бөлігінде біз затпен танысамыз санысандық деректер түрінің контейнері сияқты. Оның объектілік мәні бүгін өте үстірт қозғалатын болады.

Нысан сияқты Жолмәтін жолдарын, объектіні қамтиды санысандарды қамтиды. Жолдар сияқты, біз жасайтын сандар автоматты түрде нысан даналарына айналады.

Сандық деректер түрі

JavaScript-тегі сандар екі түрлі болады: бүтін және өзгермелі нүкте (басқа тілдердегідей - бүтін, ұзын, қысқа, қос - мұнда көптеген түрлерге бөлу жоқ). Жылжымалы нүкте сандарында нүктемен бөлінген бүтін және бөлшек бөлігі болады (тілге қарамастан).

Сандардың бұл екі түрі тәуелсіз типтер емес және олардың арасында арнайы түрлендіруді қажет етпейді. Егер, мысалы, 32.5 -ге көбейтеміз 0.4 , онда біз бірден бүтін сан аламыз 13 , бөлшек емес 13.0 , ол бүтін мәнге түрлендіруді қажет етеді (басқа тілдерде жиі болатындай).

Number объектісін құру

Жол сияқты, сан әдетте нысан ретінде жасалады. саны, қарапайым тапсырма бойынша (жолдан айырмашылығы, тырнақша қажет емес).

var myNum = 21 ;

Бірақ конструкторды пайдаланып жаңа нысан жасауға болады:

var myNum = new Number; myNum = 21;

Жағдайлардың басым көпшілігінде бұл қажетсіз және тіпті зиянды. Біз 4-ші бөлімде объектілермен мұндай жұмыстың дұрыс мысалдарын қарастырамыз.

Санды бейнелеу

Экспоненциалды форма

Сандарды тұрақты және экспоненциалды түрде көрсетуге болады, мысалы:

2e6 // бос орындар жоқ!

Бұл білдіреді: 2 x 106

Мұндай санды құжат әдісі арқылы шығарсақ жазу(), содан кейін біз әдеттегі көріністе кеңейтілген санды аламыз.

құжат. жазу(14e12);

Нәтиже:

Негізгі санау жүйелері

Сандарды ондық, он алтылық және сегіздік жүйелерде де көрсетуге болады.

тұтасондық түрдегі сандар нөлден бастауға болмайды, өйткені нөл ондық емес жүйелер үшін префикс болып табылады. Жай 0 сегіздік мәндердің префиксі болып табылады және 0x- он алтылық үшін.

Мысалға, 075 ондық санның сегіздік көрінісі болып табылады 61 , бірақ 0x75- ондық санның он алтылық көрінісі 117 .

Сегіздік мәндер бастап цифрларды пайдаланады 0 бұрын 7 , он алтылық – әріптік-сандық қатар үшін 0123456789ABCDEF. Әріптерді қолдануға болады кез келген регистрде.

Арифметикалық өрнектер кез келген сан пішінін пайдалана алады, бірақ нәтиже әрқашан ондық сан ретінде көрсетіледі.

Сандарды басқа жүйелерде көрсету

Нысан туралы әңгімелеу Жол, әдісіне тоқталдық toString(), ол кез келген нысанды жолға түрлендіреді. Сандарды жолға түрлендіру кезінде аргумент ретінде санау жүйесін көрсеткен жөн.

назар аударыңыз

Түпнұсқа нөмір жақшаға алынуы керек

(сан). toString(жүйе)

жүйесі- 2-ден 36-ға дейінгі кез келген мәнді қабылдай алады.

(157 ).toString(2 ); // 157-нің екілік көрінісі, тең (53 ).toString(27 ); // 53-тің экзотикалық 27 көрінісі, тең

Бірақ бұл нәтижелі өрнектер жолдар болып табылады. Оларды нақты сандарға айналдыру үшін анықталған жүйелересептеу, әдіс нәтижесін қажет етеді toString(жүйе)санға қайта түрлендіру. Бұл енді әдіспен емес, бірақ ядро функциясының нөмірі (нысан). Біз келесі сабақтардың бірінде ядро ​​​​функциялары туралы айтатын боламыз, бірақ әзірше синтаксиске назар аударыңыз, ол функцияны шақыруға ұқсайды:

var a = 1546; var b = a. toString(2); var c = саны(b);

Немесе бірден «екеуі бірде»:

var a = 1546; var b = саны(а. toString(2 ));

Ескерту

Егер бастапқы нөмір айнымалыға тағайындалса, әдісті шақырғанда оны жақшаға алудың қажеті жоқ. toString() .

Number нысанының қасиеттері

Объектінің жалпы қасиеттерінің конструкторы мен прототипі нысан туралы сабақта қарастырылады. Нысан, ал енді нысанның нақты қасиеттеріне тоқталайық саны.

Бұл қасиеттер тек оқуға арналғансондықтан біз оларды өзгерте алмаймыз.

MAX_VALUE

JavaScript тілінде өңдеуге болатын ең көп сан.

Бұл санның не екенін көрейік:

var e = Сан. MAX_VALUEқұжат. жазу(е)

Нәтиже:

1.7976931348623157e+308

Плюс бұл жағдайда қосу белгісі емес, оң дәреже, яғни 1,7976931348623157 × 10 308

Ескерту

Мен әдетте нақты жазылған сценарийлердің көмегімен нәтижелерді көрсетемін. Бірақ тым көп бөлшек есептеулер беттің жүктелуін баяулатуы мүмкін және осы оқулықтағы нәтижелердің көпшілігі қолмен жазылған, былайша айтқанда.

MIN_VALUE

Және бұл - сәйкесінше - ең төменгі мән. Оны зерттеп көрейік.

var f = Сан. MIN_VALUEқұжат. жазу(f)

Нәтиже:

Яғни 5×10-324

Біз бұрыннан кездестірген сандық емес мән.

Бұл сипат қандай да бір себептермен сандық әрекет сандық емес нәтиже шығарған кезде JavaScript арқылы қайтарылады.

ТЕРІС_ШЕКСІЗ, ОҢ_ШЕКСІЗ

Бірде олар «бір киік, екі киік, көп киік» деп ойлады.

JavaScript оны сәл «озық» деп санайды: «бір бұғы, екі бұғы, үш бұғы, ... , 1.7976931348623157 × 10308 марал, көп бұғы».

Бұл трансценденттік «көп» қасиет арқылы көрінеді POSITIVE_INFINITY.

Кері процесте - қондырғыны («бір бұғы») кішкентай, кішкене бөліктерге бөлу - ең кішкентай оқылатын бөлік 5 × 10 -324 бөлік болады. Кез келген кем нәрсе қазірдің өзінде ТЕРІС_ШЕКСІЗ.

Number объектісінің әдістері

Ескерту: toString() әдісіндегі сияқты, барлық басқа әдістерде, егер ол анық берілген болса (айнымалы ретінде емес) бастапқы сан жақшаға алынуы керек.

Экспоненциалды()

Ондық нүктенің алдында бір цифры бар экспоненциалды түрдегі санды көрсететін жолды қайтарады.

Синтаксис:

саны. Экспоненциалды(белгілер саны)

Аргумент белгілер саныондық бөлшектен кейін дөңгелектеу дәлдігін орнатады. Аргумент алынып тасталса, ондық бөлшектен кейінгі сандар саны мәнді көрсету үшін қажетті цифрлар санына тең болады.

Мысалы:

var myFullNumber = 4659872156831598853654127; құжат. жазу(myFullNumber.toExponential(4))

Нәтиже:

toFixed()

Аргументте көрсетілген ондық таңбалар санына дейін дөңгелектенген бекітілген нүктелік санды көрсететін жолды қайтарады.

Синтаксис:

саны. Бекітілген(белгілер саны)

Мысалдар:

var myDecimal1 = 46,59872156831598853654127; var myDecimal2 = 46 ; құжат. жазу(myDecimal1.toFixed(1)) құжаты. жазу("
") құжат. жазу(myDecimal2.toFixed(3))

Нәтижелер:

Бұл әдіс кейде өте пайдалы. Мысалы, соңғы сабақтағы қиын функцияны енді келесідей көрсетуге болады:

anyRootPlus(x, y) функциясы ( var srcnum = Math . Exp(мате. журнал(x) / y); varresult = (srcnum). Бекітілген(3); нәтижені қайтару; )

Енді біз оны пішінге енгіземіз және оны тексереміз:

Рас, енді бүтін сандар нүктеден кейін үш нөлге ие болады. Бірақ сандар мен жолдардың әрекетін білу, шартты операторлармен жұмыс істей білу және типті түрлендіру, қажетті сандық «дизайнды» жасау соншалықты қиын емес.

toLocaleString()

Ондық және мыңдық бөлгіштер үшін тілді сақтай отырып, сандық нысанды жол мәніне түрлендіреді. Ол негіз ретінде алынады Ұлттық валюта, сондықтан орыс тіліндегі нұсқада барлық, тіпті бүтін сандар екі ондық таңбамен (копейкпен) берілген:

var myDrob = 25.327; var myMnogo = 25635120; var myRoubl = 35 ; /* үтірлерді жақсырақ көру үшін үлкейтіңіз */құжат. жазу("

" +myDrob. toLocaleString() + "

" ); құжат. жазу("

" + myMnogo. toLocaleString() + "

" ); құжат. жазу("

" + меніңРубл. toLocaleString() + "

" );

Нәтижелер:

toPrecision()

Маңызды цифрлардың берілген жалпы саны бар санды көрсететін жолды қайтарады.

Синтаксис:

саны. toPrecision(сандық сандар)

Аргумент:

сандық сандар— көрсетілетін жолдағы цифрлар саны. Берілген сома болса көбірек мөлшербастапқы санда ондық нөлдер көрсетіледі.

құжат. жазу((354 ).toPrecision(8 ))

Нәтиже:

Әдістері toPrecision()Және toLocaleString()бірлесіп жұмыс істемейді, кез келген дәлдіктегі сандардың «орыс дизайны» үшін сіз өзіңіздің функцияңызды жазуыңыз керек. Жазылған функцияны объектінің қосымша әдісін жасауға болады саны, біз нысанмен ұқсас нәрсені жасадық Күн(). Нысан туралы толығырақ сабақта Нысан.

toString()

Жақсы, біз бұл әдісті сабақтың басында егжей-тегжейлі талқыладық.

Өз әдістемемізді құру

Енді біз ондық бөлшектердің кез келген саны бар санды мыңдықтардың арасындағы бос орындармен және үтірмен ондық бөлгіш ретінде көрсететін бірдей әдісті жасаймыз.

Мұны істеу үшін бізге нысан данасында алынған жолдар мен массивтерді түрлендірумен айналысатын өте күрделі функция қажет. саны.

Әдісті жариялайық:

Number.prototype.toRussianString = toRussianString

Функцияның құрылысына кіріспес бұрын, біз тапсырмаларды тұжырымдаймыз.

Біріншіден, санды жол ретінде көрсетіп, одан бүтін бөлікті, бөлшек бөлігін және бөлу нүктесін алуымыз керек.

Содан кейін бүтін бөлікке қажетті бос орындарды қойып, бөлшек бөлігін функцияға (және әдіске) аргумент ретінде көрсетуге болатын таңбалар санына дейін дөңгелектеңіз және нүктені үтірге өзгертіңіз.

Қажетті айнымалыларды жариялау арқылы функцияны бастайық.

функциясы toRussianString(prec) ( /* жолды түрлендіру айнымалылары */ var a = "" , b = "" , c, d, e;

Алға қарай отырып, мен ондық бөлшек біздің жолдың бұзылуының нәтижесінде өзінің «бөлшек» мәнін жоғалтады және біз онымен басқа бүтін сан сияқты жұмыс істеуіміз керек деп айтамын. Онымен жұмыс істеу үшін біз әдісті қолданамыз toPrecision(), және функциямыздың аргументі (бір уақытта біздің әдіс) әдіс мәнін орнатады toPrecision(). Бұл әдістің минималды параметрі біреу. Біздің функциямыз үшін нөл де қажет болуы мүмкін (бүтін санға дөңгелектенген кезде). Сонымен қатар, дұрыс дөңгелектеу объектіні «жару» басталғанға дейін жұмыс істеуі керек. Сондықтан, айнымалы мәндерді жариялағанда, біз бұл тұзақты айналып өтеміз:

/* берілген нысан данасын жолға түрлендіретін айнымалы */ if (prec == 0 ) var str = this . Бекітілген(0 ).toStringtoString(10 );

Айнымалыларды жариялауды жалғастырайық.

/* қайтарылатын мән үшін айнымалы */ varnr1; /* «бөлшектеу» бөліктері үшін айнымалылар */ var intpart, fractpaft, precpart, бөлгіш, нүкте = str. lastIndexOf("." ); /* есептегіш */ var i;

Айнымалы нүктекөрсетілген санның жолындағы нүктенің орнын табады. Бұл позицияда біз бүкіл бөлікті кесіп тастаймыз ( ішкі бөлім). Егер сан бүтін болса және нүктесі болмаса, оның орны нөлден кіші болады. Бұл жағдайда бөлгіш ( бөлгіш) және бөлшек бөлігі ( бөлшек бөлігі) бос жолдар болуы керек. IN әйтпесеБөлгішке үтір қойылады, ал одан әрі жұмыс үшін бөлшек бөлігі кесіледі:

егер (нүкте< 0 ) { intpart = str; fractpart = "" ; бөлгіш = "" ;) else ( intpart = str. ішкі жол(0 , нүкте); fractpart = str. ішкі жол(нүкте + 1 , көш. ұзындығы); бөлгіш = "," ;}

Біз бүкіл бөлікпен жұмыс істейміз. Бос орындар 3 таңбадан көп болса ғана қажет:

егер(ішкі бөлім. ұзындығы > 3 ) {

Енді келесі «солиттерді» бөлейік (бұның бәрі шартты мәлімдемеде болады):

Үштіктерді кері ретпен айналдырайық.

Алдымен оларды айнымалыға жинап алайық аешқандай қосымшаларсыз, нәтижесінде алынған ішкі жолдың ұзындығын есептеу үшін ғана. Ақыр соңында, егер цифрлардың жалпы саны 3-ке бөлінбесе, сол жақта 1 немесе 2 цифрдан тұратын құйрық қалды, енді оны ішкі жолдың ұзындығынан «үштік» арқылы шегеріп, оны ішкі жол ретінде көрсете аламыз. бүкіл жолдың ұзындығы (айнымалы в). Ал оның алдына үзілмейтін бос орын қойыңыз - (содан кейін біз оны алып тастаймыз). Не үшін? Үш цифрдан тұратын топтар кері тәртіпте оқылғандықтан, бұл бастапқы құйрықты жолдың соңына қою керек. Яғни, егер бізде, айталық, 36748521 нөмірі болса, массив үшін бөлгіш болуы үшін әр топтың алдына үзілмейтін бос орын қойып, 521 748 36 қатарға қоюымыз керек (ақыр соңында, біз аударуымыз керек. оларды кері қайтарады және мұны массив әдісі арқылы жасауға болады кері()).

Циклдің соңғы нұсқаулығында біз үштік етіп орналастырамыз және нәтижені айнымалыға жазамыз б.

үшін (i=ішкі бөлім. ұзындығы-3; i>=0 ; i-=3) /* үшемді жинау */( a = a + ішкі бөлік. кіші ст(i, 3 ); /* сол жақ «құйрықты» табыңыз */ c= " " +ішкі бөлік. кіші ст(0 , бөлім ішінде. ұзындығы-а. ұзындығы); /* бөлгіштерді үштікке орналастырыңыз */ b=b+ " " +ішкі бөлік. кіші ст(i, 3);)

Жолдарды қосқанда b+cбіз массивке түрлендіруді қажет ететін жолды аламыз, содан кейін бұл массив кері және қайтадан жолға түрлендіріледі (бұның бәрі айнымалыға жазылған г).

D = (b+c). Сызат(" " ).кері().toString().ауыстырыңыз(/,/г, " " );

Жиым бөлгіш үтірлермен бірге жолға түрлендіріледі, бізге олар қажет емес. Сондықтан, сол нұсқауларда біз оларды жоямыз тұрақты тіркес /, /г, қайда /,/ - үтірге тұрақты өрнек құру, және g- жолда кездесетін барлық өрнек үлгілерін (басқаша айтқанда, барлық үтірлерді) ауыстыру қажет екенін көрсететін «жалау». Біз оларды бірдей үзілмейтін бос орындармен ауыстырамыз.

(Толығырақ тұрақты тіркестернұсқаулықтың соңғы бөлімінде талқыланады.)

Енді сізге тағы бір нәрсені тазалау керек (сол шартты оператордың ішінде егер (бөлік ішіндегі ұзындығы > 3)).

Өйткені, жолымыздың басында немесе соңында 6 таңбадан тұратын қосымша үзілмейтін бос орын болады: «&», «n», «b», «s», «p» және ";". Сондықтан біз қоқысты тазалап, нәтижені айнымалыға жазамыз e:

егер (д. ішкі жол(0 , 1 ) == "&" ) e = d. ішкі жол(6, д. ұзындығы-6); әйтпесе e = d. ішкі жол(0 , д. ұзындығы-6 );

Енді біз таза ар-ұжданмен барлық шартты операторды жауып, «үштікке» бөлуді қажет етпейтін қысқа санға балама жаза аламыз.

) else e = intpart;

Сонымен айнымалы eсанның бүтін бөлігін сақтайды, біз ондықпен айналысамыз.

Назар аударыңыз! Бөлшек бөлігімен жұмыс істегенде (оны енді бүтін сан ретінде қарастыру керек), біз есте сақтауымыз керек: prec == 0функция «сүрініп қалады», сондықтан бірден «қосайық»:

егер (алдын ала != 0 ) (

Енді сіз тыныш жұмыс істей аласыз. Бірақ біз енді айналып өтетін тағы бірнеше «тас» бар.

Біріншіден, бізде бөлшек бөлігі болса, делік 41 , және біз дөңгелектеуді 3 цифрға, содан кейін әдісті орнатамыз toPrecision, бөлшек бөлігін бүтін сан ретінде алып, шығады 41.0 , яғни нүктені алып тастау керек.

Екіншіден, егер бастапқы санның бөлшек бөлігі 3 цифрдан үлкен болса, онда әдіс toPrecisionнәтижені экспоненциалды түрде шығара бастайды. Мұнымен де күресу керек.

Сондықтан біз нәтижені үш айнымалы арқылы «тазартамыз»: прекпарт, precpart1Және precpart2.

Precpart = (Сан (бөлшек). toPrecision(алдын ала)). toString(10 )

Енді біз тазалаймыз:

/* бөлшек бөлігі болса */егер (фрактпара != "") ( /* нүктені тауып алып тастаңыз */ precpart1 = precpart. ауыстырыңыз(".", "") /* көрсеткіштің бар-жоғын тексеріңіз, */ varplus = precpart1.lastIndexOf("e"); /* және ол бар болса, */егер (плюс > 0 ) /* түбірін жою, */ precpart2 = precpart1. ішкі жол(0, плюс); /* әйтпесе */басқа /* ештеңені өзгертпеңіз */ precpart2 = precpart1) /* бөлшек бөлігі болмаса, */басқа /* содан кейін нөлдерді шығарып, нүктеден қайтадан құтылыңыз */ precpart2= "," +препарат. ауыстырыңыз("." , "" )

Бастапқы санда бөлшек бөлігі болмаған жағдайда үтір болмайды деп басында көрсеткендіктен, бұл жағдайда оны қайтадан қою керек.

) басқа ( /* яғни prec әлі нөл болса, бос жолдарды шығарыңыз */ precpart2= "" ; бөлгіш = "" ; }

Және соңғы аккорд:

Nr1 = e + бөлгіш + precpart2; қайтару nr1; )

Толық функция:

toRussianString(prec) функциясы ( var a = "" , b = "" , c, d, e; if (prec == 0 ) var str = this . Бекітілген(0 ).toString(10 ); else var str = this . toString(10 ); varnr1; var intpart, fractpaft, precpart, бөлгіш, нүкте = str. lastIndexOf("." ); var i; егер (нүкте< 0 ) { intpart = str; fractpart = "" ; бөлгіш = "" ;) else ( intpart = str. ішкі жол(0 , нүкте); fractpart = str. ішкі жол(нүкте + 1 , көш. ұзындығы); бөлгіш = "," ;) егер (ішкі бөлім. ұзындығы> 3 ) ( (i=inpart.) үшін ұзындығы-3; i>=0 ; i-=3 ) ( a = a + ішкі бөлік. кіші ст(i, 3 ); c= " " +ішкі бөлік. кіші ст(0 , бөлім ішінде. ұзындығы-а. ұзындығы); b=b+ " " +ішкі бөлік. кіші ст(i, 3 );) d = (b+c). Сызат(" " ).кері().toString().ауыстырыңыз(/,/г, " " ); егер (д. ішкі жол(0 , 1 ) == "&" ) e = d. ішкі жол(6, д. ұзындығы-6); әйтпесе e = d. ішкі жол(0 , д. ұзындығы-6); ) else e = intpart; if (prec != 0 ) ( precpart = (Сан (бөлшек). toPrecision(алдын ала)). toString(10 ) егер (fracpart != "") ( precpart1 = precpart. ауыстырыңыз(".", "") var plus = precpart1.lastIndexOf("e"); егер (плюс > 0 ) precpart2 = precpart1. ішкі жол(0, плюс); else precpart2 = precpart1 ) else precpart2 = "," +препарат. ауыстырыңыз("." , "" ) ) else ( precpart2 = "" ; бөлгіш = "" ; ) nr1 = e + бөлгіш + precpart2; қайтару nr1; )

Енді бұл функцияны әдіс ретінде шақыруға болады.

Var myNumber = 2569843359.6583521 құжат. жазу(менің нөмірім. toRussianString(3 ))

Нәтиже:

Әдіс конструкторы мен функциясын кітапханаға, яғни веб-бет кодынан шақыруға болатын .js файлына қоюға болады. Әртүрлі нысандар үшін әдістерді жазғанда, әдістерді осы нысандар үшін кітапхана файлдары бойынша сұрыптауға және қосымша әдістерді пайдалануға болады.

Бұл мақалада біз сандарды, математикалық операторларды, санды жолға және керісінше түрлендіру жолдарын, сондай-ақ басқа да көптеген маңызды сәттерді егжей-тегжейлі қарастырамыз.

isFinite функциясы

isFinite функциясы аргументтің соңғы сан екенін тексеруге мүмкіндік береді.

Жауап ретінде берілген функцияаргумент Infinity , -Infinity , NaN болса немесе осы арнайы сандық мәндердің біріне шығарылатын болса, жалған мәнін қайтарады. Әйтпесе, бұл функция қайтарылады шын.

IsFinite(73); // true isFinite(-1/0); // false isFinite(Infinity); // false isFinite(NaN); // false isFinite("Мәтін"); // жалған

isFinite жаһандық функциясына қоса, JavaScript-те Number.isFinite әдісі де бар. Ол, isFinite-тен айырмашылығы, аргументті санға түрлендіруге мәжбүрлемейді.

IsFinite("73"); // true Number.isFinite("73"); // жалған

isNaN функциясы

isNaN функциясы аргументтің сан екенін немесе біреуге түрлендіруге болатынын анықтауға арналған. Олай болса, isNaN функциясы жалған мәнді қайтарады. Әйтпесе ол шындықты қайтарады.

IsNaN(NaN); //true isNaN("25px"); //шын, өйткені 20px - бұл NaN(25.5) сан емес; //false isNaN("25,5"); //false isNaN(" "); //жалған, өйткені бос орын немесе бірнеше бос орындар 0 isNaN(null) мәніне түрлендіріледі; //жалған, өйткені нөлдік мән 0-ге түрлендірілді isNaN(true); //жалған, өйткені ақиқат 1 isNaN(false) мәніне түрлендірілді; //жалған, өйткені жалған мән 0-ге түрлендіріледі

Бұл әрекетті трансляция түрінсіз орындау қажет болса, Number.isNaN әдісін пайдаланыңыз. Бұл әдіс тілге ECMAScript 6 нұсқасынан бастап енгізілген.

Жолды санға қалай анық түрлендіруге болады?

Келесі әдістерді пайдаланып жолды санға нақты түрде шығаруға болады:

1. Қолдану біртұтас оператор +Мәннің алдына қойылады.

+"7,35"; // 7.35 +"мәтін"; // НаН

Бұл әдіс жолдың басындағы және соңындағы бос орындарды, сондай-ақ \n (жол арнасы) елемейді.

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

Қолдану бұл әдісбос жол немесе бос орындар мен \n тұратын жол 0 санына түрленетінін ескеріңіз. Оған қоса, ол нөлдік деректер түрін және логикалық мәндерді санға түрлендіреді.

Нөл; //0 +шын; //1 +жалған; //0 +" "; //0

2. parseInt функциясы. Бұл функция түрлендіруге арналған бүтін санға аргумент. Қолдануға қарсы біртұтас оператор +, бұл әдісжолды санға түрлендіруге мүмкіндік береді, онда барлық таңбалар сандық емес. Ол бірінші таңбадан бастап жолды түрлендіруді бастайды. Және ол сандық таңба болып табылмайтын таңбаны кездестірген бойда бұл функция жұмысын тоқтатады және алынған санды қайтарады.

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

Бұл функция әртүрлі санау жүйелерімен (екілік, сегіздік, ондық, он алтылық) жұмыс істей алады. Санау жүйесінің негізін көрсету 2 аргумент арқылы жүзеге асады.

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

parseInt функциясына қосымша JavaScript-те Number.parseInt әдісі бар. Бұл әдіс parseInt функциясынан еш айырмашылығы жоқ және JavaScript-ке ECMASCRIPT 2015(6) спецификациясымен енгізілген.

3. parseFloat функциясы. parseFloat функциясы parseInt функциясына ұқсас, тек ол аргументті бөлшек санға түрлендіруге мүмкіндік береді.

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

Сонымен қатар, parseFloat функциясы, parseInt-тен айырмашылығы, 2 аргументі жоқ, сондықтан ол әрқашан жолды ондық санау жүйесіндегі сан ретінде қарастыруға тырысады.

ParseFloat("3.14"); parseFloat("314e-2"); parseFloat("0,0314E+2");

parseFloat функциясына қосымша JavaScript-те Number.parseFloat әдісі бар. Бұл әдіс parseFloat функциясынан еш айырмашылығы жоқ және JavaScript-ке ECMASCRIPT 2015(6) спецификациясымен енгізілген.

Санды жолға түрлендіру

toString әдісі арқылы санды жолға айналдыруға болады.

(12.8).toString(); //"12,8"

toString әдісі сонымен қатар санды жолға нақты шығару керек екенін ескере отырып, санау жүйесінің негізін көрсетуге мүмкіндік береді:

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

Айнымалының сан екенін қалай тексеруге болады

Айнымалы мәннің сан екенін келесі әдістердің бірін пайдаланып анықтауға болады:

1. isNaN және isFinite функцияларын пайдалану:

// myVar айнымалы болып табылады, егер (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) ( //myVar - бұл сан немесе оған трансляциялауға болады );

Функция ретінде:

// функция функциясы isNumeric(мән) (қайтару !isNaN(parseFloat(мән)) && isFinite(parseFloat(мән)); ) // қолданыс var myVar = "12px"; console.log(isNumeric(myVar)); //шын

Бұл әдіс көрсетілген мәннің сан екенін немесе оған түрлендіруге болатынын анықтауға мүмкіндік береді. Бұл опциясан ретінде бос жолды, бос орындар жолын санамайды, null , Infinity , -Infinity , true және false.

2. Қолдану оператор түріжәне функциялары isFinite, isNaN:

// мәннің сан екенін тексеретін функция isNumber(мән) (мәннің түрін қайтару === "(!LANG:сан)" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Бұл функция көрсетілген мәннің Number түріндегі екенін және Infinity, -Infinity және NaN арнайы мәндерінің бірі емес екенін анықтайды. Олай болса, бұл функция шын мәнін қайтарады.

3. ECMAScript 6 Number.isInteger(мән) әдісін пайдалану. Бұл әдіс көрсетілген мәннің бүтін сан екенін анықтауға мүмкіндік береді.

Number.isInteger("20"); //жалған, өйткені бұл әдіс жолды Number.isInteger(20) санына аудармайды; //шын, өйткені берілген мән – сан

Жұп және тақ сандар

Санның жұп немесе тақ екенін тексеруге болады келесі функциялар:

// Санның жұп екенін тексеру функциясы isEven(n) функциясы (қайтару n % 2 == 0; ) // Санның тақ екенін тексеру функциясы isOdd(n) (қайтару Math.abs(n % 2) == 1;)

Бірақ мұндай тексеруді орындамас бұрын, көрсетілген мәннің сан екеніне көз жеткізген жөн:

мән=20; егер (Number.isInteger(мән)) ( if (isEven(мән)) ( console.log("Number" + value.toString() + " - жұп"); ) )

Javascript тіліндегі қарапайым сандар

Біз шығаратын мысалды қарастырайық Javascript 2-ден 100-ге дейінгі жай сандар.

// Санның жай екенін тексеретін функцияPrime(мән) функциясы (if (isNaN(мән) || !isFinite(мән) || мән%1 || мәні)< 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);

Javascript-те санды дөңгелектеу

JavaScript тілінде бөлшек санды бүтін мәнге дейін дөңгелектеудің әртүрлі жолдары бар.

1. Ол үшін арнайы әзірленген Math.floor , Math.ceil және Math.round әдістерін пайдалану. Math.floor әдісі бөлшек санды ең жақын бүтін санға дейін дөңгелектейді, яғни. жай бөлшек бөлігін алып тастайды. Math.ceil бөлшек санды ең жақын бүтін санға дейін дөңгелектейді. Math.round бөлшек бөлігінің мәніне байланысты санды жоғары немесе төмен дөңгелектейді. Бөлшек бөлігі 0,5-тен үлкен немесе тең болса, онда жоғары, әйтпесе айналдыру төмен болады.

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

2. toFixed(дәлдік) әдісін қолдану. Бұл әдіс санның бөлшек бөлігін көрсетілген дәлдікке дейін дөңгелектейді. Дөңгелектеу нәтижесі жол ретінде қайтарылады.

Console.log(7.987.toFixed(2)); //"7,99"

Егер санның көрсетілген дәлдігін қалыптастыру үшін ондық таңбалар жеткіліксіз болса, онда ол нөлдермен толтырылады.

Console.log(7.987.toFixed(5)); //"7,98700"

3. toPrecision(precision) әдісі арқылы. Бұл әдіс көрсетілген дәлдікпен санды білдіреді. Бұл ретте ол тек бөлшекті ғана емес, санның бүтін бөлігін де дөңгелектей алады. Алынған санды тұрақты нүктедегі немесе экспоненциалды түрдегі нәтижеге байланысты осы әдіспен көрсетуге болады.

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. Логикалық ЕМЕС немесе НЕМЕСЕ операторларын пайдалану.

//қос логикалық терістеу арқылы console.log(~~7.9); //7 // логикалық НЕМЕСЕ нөлді пайдалану арқылы: console.log(7.9^0); //7

Санның бүтін және бөлшек бөлігі

Math.floor() және parseInt() әдістері арқылы санның бүтін бөлігін алуға болады:

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

Процент (%) операторы арқылы санның бөлшек бөлігін алуға болады. Бұл оператор бірінші санды екінші санға бөлуден алынатын қалдықты қайтарады. Бұл жағдайда 2-ші сан ретінде 1 қолданылуы керек.

Console.log(7,21%1); // 0,20999999999999996 // 2 ондық таңбаға дейін дәл console.log((7,21%1).toFixed(2)); // "0,21"

Сонымен қатар, бөлшек бөлікті есептеулер арқылы да алуға болады:

var number = 7,21; var fractionNumber = сан - Math.floor(Math.abs(сан)); console.log(бөлшек саны); // 0,20999999999999996

Бөлінетін сан

Процент операторы арқылы санның біркелкі бөлінетінін анықтауға болады:

нұсқа саны = 9; // егер 3-ке бөлетін санның қалдығы 0 болса, онда иә, әйтпесе жоқ if (сан%3==0) ( console.log («" + сан + " саны 3-ке бөлінеді»); ) басқа ( console. log("Сан " + сан + " 3-ке бөлінбейді"); )

Санды пішімдеу

JavaScript тілінде toLocaleString() әдісі тілге (операциялық жүйенің тіл параметрлері) сәйкес санның шығысын пішімдеуге мүмкіндік береді.

Мысалы, жүйеде әдепкі бойынша орнатылған аймақтық стандарттарға сәйкес нөмірді пішімдейік:

var number = 345,46; console.log(number.toLocaleString()); //"345,46"

Мысалы, санды Ресейдің аймақтық стандарттарына (ru) сәйкес пішімдейік:

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

Бұл әдісті санды валюта ретінде пішімдеу үшін де пайдалануға болады:

Console.log((2540.125).toLocaleString("ru-RU",(стиль:"валюта", валюта:"RUB"))); //"2,540,13 ₽" console.log((89.3).toLocaleString("ru-RU",(стиль:"валюта", валюта:"USD"))); //"$89,30" console.log((2301.99).toLocaleString("ru-RU",(стиль:"currency", валюта:"EUR"))); //"€2 301,99"

Санды пайызбен көрсету:

Console.log((0.45).toLocaleString("ru-RU",(стиль:"пайыз"))); //"45%"

Санды сандарға бөліңіз (useGrouping сипаты):

Console.log((125452.32).toLocaleString("ru-RU",(топтастыруды пайдалану:true))); //"125 452,32"

Ондық бөлшектен кейін белгілі бір цифрлар (2) бар санды басып шығарыңыз:

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

Сандарды салыстыру

JavaScript-те сандарды салыстыру үшін келесі операторлар қолданылады: == (тең), != (тең емес), > (үлкен),< (меньше), >= (үлкен немесе тең),<= (меньше или равно).

Мысалы, екі санды салыстырайық:

Console.log(2>3); //false console.log(5>=3); //шын

Бөлшек бөлігі бар сандарды салыстыру кезінде осы есептеулер кезінде орын алуы мүмкін қателерді ескеру қажет.

Мысалы, JavaScript-те сандардың қосындысы (0,2 + 0,4) 0,6-ға тең емес:

Console.log((0,2+0,4)==0,6); //жалған

Барлық есептеулер компьютер немесе басқа болғандықтан қателер орын алады электрондық құрылғы 2 санау жүйесінде шығарады. Анау. кез келген әрекетті орындамас бұрын компьютер алдымен өрнекте берілген сандарды 2 санау жүйесіне түрлендіруі керек. Бірақ 2-ші санау жүйесінде кез келген бөлшек ондық санды дәл көрсету мүмкін емес.

Мысалы, саны 0,25 10 дюйм екілік жүйедәл түрлендірілді.

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

Мысалы, 0,2 10 санын 2 жүйесіне белгілі бір дәлдікпен ғана түрлендіруге болады:

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

Нәтижесінде бұл қателер екі санның қосындысын есептеуге және салыстыру нәтижелеріне әсер етеді. Анау. JavaScript бұл жазбаны келесідей көретіні белгілі болды:

0.6000000000000001==0.6

Бөлшек бөлігі бар сандарды есептеу немесе көрсету кезінде сіз әрқашан мұны істеу дәлдігін көрсетуіңіз керек.

Мысалы, toFixed() және toPrecision() әдістерін пайдаланып 2 ондық таңбаға дейінгі сандарды салыстырыңыз:

//әдісі toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //toPrecision() әдісі console.log((0,2+0,4).toPrecision(2)==(0,6).toPrecision(2)); //шын

Негізгі математикалық амалдар

JavaScript-те келесі математикалық операторлар бар: + (қосу), - (алу), * (көбейту), / (бөлу), % (бөлудің қалдығы), ++ (мәнді 1-ге арттыру), -- (мәнді 1-ге азайту ).

6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, яғни. 6:3=2 => 6-3*2 => демалыс(0) 5%2 //1, яғни. 5:2=2(,5) => 5-2*2 => демалыс(1) 7,3%2 //1,3, яғни. 7.3:2=3(.65) => 7.3-2*3 => rest(1.3) //операция нәтижесінің таңбасы % бірінші мәннің белгісіне тең -9%2.5 //-1.5, яғни. 9:2,5=3(,6) => 9-2,5*3 => демалыс(1,5) -9%-2,5 //-1,5, яғни. 9:2,5=3(,6) => 9-2,5*3 => демалыс(1,5) -2%5 //-2, яғни. 2:5=0(.4) => 2-5*0 => демалыс(2) x = 3; консоль журналы(x++); //3 көрсетеді, содан кейін y мәнін 4-ке орнатады console.log(x); //4 x = 3; консоль журналы(++x); //4 жинайды және x = 5 шығарады; консоль журналы(x--); //5, y шығарады, содан кейін 4 console.log(x) орнатады; //4 x = 5; консоль журналы(--x); //4-ке орнатады және шығарады Сонымен қатар, JavaScript-те біріктірілген операторлар бар: 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; консоль журналы(x); //9 x = 3; y=6; x-=y; консоль журналы(x); //-3 x = 3; y=6; x*=y; консоль журналы(x); //18 x = 3; y=6; x/=y; консоль журналы(x); //0,5 x = 3; y=6; x%=y; консоль журналы(x); //3

Көбінесе есептеулер қажетті диапазонға сәйкес келмейтін нәтижелер береді. Нәтижесінде, қажет JavaScript дөңгелектеу белгілі бір мәнге дейін.

Неліктен дөңгелек сандар?

JavaScript бүтін сандарды сақтамайды, өйткені олардың мәндері өзгермелі нүкте сандары ретінде ұсынылған. Көптеген бөлшектерді ондық таңбалардың белгілі бір соңғы саны бар сан ретінде көрсету мүмкін емес, сондықтан JavaScript келесідей нәтижелерді жасай алады:

0.1 * 0.2; > 0.020000000000000004

Іс жүзінде бұл маңызды емес, өйткені біз 2 квинтилион қате туралы айтып отырмыз. Бірақ бұл валюта мәндерін, пайыздарды немесе файл өлшемдерін көрсететін сандармен жұмыс істегенде нәтижеге әсер етуі мүмкін. Сондықтан белгілі бір ондық бөлшекті орындау керек.

Ондық бөлшектерді дөңгелектеу

Ондық санды «қию» үшін toFixed() немесе toPrecision() әдістерін пайдаланыңыз. Олардың екеуі де нәтижеге қосылатын маңызды және ондық таңбалардың санын көрсететін бір аргумент алады:

  • toFixed() үшін ешқандай аргумент көрсетілмесе, әдепкі мән 0 болады, яғни ондық бөлшек болмайды; аргументтің максималды мәні - 20 ;
  • toPrecision() параметріне ешқандай аргумент берілмесе, сан өзгертілмейді.

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"

Ескерту

toFixed() және toPrecision екеуі де нәтиженің сан емес, дөңгелектенген жол көрінісін қайтарады. Бұл randNum-ға дөңгелектенген қосу жалғыз санға емес, жолды біріктіруге әкелетінін білдіреді:

console.log(randNum + дөңгелектенген); > "6.256"

JavaScript-ті жүздікке дейін дөңгелектеуді қаласаңыз, parseFloat() пайдаланыңыз:

var randNum = 6,25; var rounded = parseFloat(randNum.toFixed(1)); консоль журналы (дөңгелектелген); > 6.3

toFixed() және toPrecision() да қысқартудың пайдалы әдістері болып табылады үлкен санондық бөлшектер. Бұл ақша бірліктерін көрсететін сандармен жұмыс істегенде пайдалы:

var totalNum = 1 var dollarsCents = totalNum.toFixed(2); console.log(dollarscents); > "1,00"

Егер санда дәлдік параметрінен көбірек сандар болса, toPrecision нәтижені ғылыми форматта қайтаратынын ескеріңіз:

var num = 123,435 num.toPrecision(2); > "1.2e+2"

Ондық бөлшектерді дөңгелектеу кезінде қателерді қалай болдырмауға болады

Кейбір жағдайларда toFixed және toPrecision жасайды JavaScript 5-ші айналым төмен, және одан да көп емес:

var numTest = 1,005; numTest.toFixed(2); > 1;

Жоғарыдағы мысалдың нәтижесі 1 емес, 1,01 болуы керек. Бұл қатені болдырмас үшін экспоненциалды сандарды пайдалануды ұсынамын:

функция дөңгелек(мән, ондық) (қайтару Сан(Math.round(мән+"e"+ондық)+"e-"+ондық); )

Қолдану:

дөңгелек(1.005,2); > 1,01

Егер сізге дөңгелектеуден гөрі сенімдірек шешім қажет болса, ол мына жерден қолжетімді MDN.

Эпсилонмен дөңгелектеу

Альтернативті әдіс JavaScript ондыққа дейін дөңгелектеу ES6-да енгізілді ( JavaScript 2015 ретінде де белгілі). « Машиналық эпсилон' екі өзгермелі нүкте сандарын салыстыру кезінде ақылға қонымды қателік шегін қамтамасыз етеді. Дөңгелектеусіз салыстырулар келесіге ұқсас нәтижелерді бере алады:

0,1 + 0,2 === 0,3 > жалған

Math.EPSILON жарамды салыстыруды алу үшін функцияда қолданылуы мүмкін:

epsEqu(x, y) функциясы (қайтару Math.abs(x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }

Функция екі аргумент қабылдайды: біреуі есептеуді қамтиды, екіншісі күтілетін (дөңгелектелген) нәтиже. Ол осы екі параметрдің салыстыруын қайтарады:

epsEqu(0,1 + 0,2, 0,3) > шын

Барлық заманауи браузерлер ES6 математикалық функцияларын қолдайды. Бірақ ескі браузерлерде қолдау көрсету қажет болса, онда политолтыруды пайдалану керек.

Ондық бөлшекті қысқарту

Бұрын ұсынылған әдістердің барлығы орындалады JavaScript ондыққа дейін дөңгелектеу. Оң санды екі ондық бөлшекке қысқарту үшін оны 100-ге көбейтіп, қайтадан қысқартып, нәтижені 100-ге бөліңіз:

функция қысқартылған(сан) (қайтару Math.trunc(num * 100) / 100; ) қысқартылған(3.1416) > 3.14

Егер сізге икемді нәрсе қажет болса, биттік операторды пайдалануға болады:

функция кесілген(num, decimalPlaces) ( var numPowerConverter = Math.pow(10, decimalPlaces); қайтару ~~(num * numPowerConverter)/numPowerConverter; )

Қолданылуы:

var randInt = 35,874993; кесілген(randInt,3); > 35,874

Ең жақын санға дейін дөңгелектеу

Жүзеге асыру JavaScript бүтін санға дейін дөңгелектенеді, Math.round() пайдаланылады:

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

Ескертіп қой » жарты мәндер", мысалы, .5 , дөңгелектенеді.

Ең жақын бүтін санға дейін дөңгелектеу

Төменге айналдырғыңыз келсе, Math.floor() әдісін пайдаланыңыз:

Math.floor(42.23); > 42 Math.floor(36,93); > 36

«Төмен» дөңгелектеу барлық сандар үшін, соның ішінде теріс сандар үшін бір бағытқа ие. Мұны шексіз көп қабаты бар тіреген ғимарат ретінде елестетуге болады, соның ішінде іргетас деңгейінен төмен ( теріс сандарды білдіреді). Егер сіз 2 және 3 жертөле қабаттары арасындағы лифтте болсаңыз ( ол -2,5 мәніне сәйкес келеді), Math.floor сізді -3 қабатқа апарады:

Math.floor(-2,5); > -3

Бұған жол бермеу қажет болса, JavaScript Math rounding функциясын Math.truncu() арқылы пайдаланыңыз, оған барлығында қолдау көрсетіледі. заманауи браузерлер(басқа IE/Edge):

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

MDN сонымен қатар қамтамасыз етеді Ескі браузерлерде және IE/Edge жүйесінде Math.trunc қолдауын қамтамасыз ету үшін 3 жолды политолтыру.

Ең жақын бүтін санға дейін дөңгелектеу

Ондық сандарды дөңгелектегіңіз келсе, Math.ceil пайдаланыңыз. Сондай-ақ, бұл әдісті шексіз лифт ретінде қарастыруға болады: Math.ceil санның теріс немесе оң екеніне қарамастан, сізді әрқашан «жоғары» көтереді:

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

Ең жақын еселікке дейін дөңгелектеу

Мәнді 5-тің ең жақын еселігіне дейін дөңгелектегіңіз келсе, санды 5-ке бөлетін, оны дөңгелектейтін және нәтижені бірдей мәнге көбейтетін функцияны жасаңыз:

roundTo5(num) функциясы (қайтару Math.round(num/5)*5; )

Қолданылуы:

roundTo5(11); > 10

Егер сізге JavaScript-ті екі ондық таңбаға дейін дөңгелектеу қажет болса, функцияға тұқымды да, көбейтіндіні де беруге болады:

roundToMultiple(сан, еселік) функциясы ( Math.round(num/multiple)*көп; қайтарады)

Функцияны пайдалану үшін оның шақыруында дөңгелектенетін санды және көбейтіндіні қосыңыз:

var initialNumber = 11; var multiple = 10; roundToMultiple(бастапқы сан, бірнеше); > 10;

Мәндерді тек жоғары немесе төмен дөңгелектеу үшін дөңгелек функцияны төбе немесе еденге ауыстырыңыз.

Ауқымға байланыстыру

Кейде белгілі бір ауқымда болуы керек x мәнін алу керек. Мысалы, біз 1 мен 100 арасындағы мәнді қалаймыз, бірақ біз 123 мәнін аламыз. Мұны түзету үшін min() функциясын қолдануға болады. сандардың ең кішісін қайтарады) және макс( максималды рұқсат етілген санды қайтарады).

Қолданылуы:

var lowBound = 1; varhighBound = 100; varnumInput = 123; var clamped = Math.max(lowBound, Math.min(numInput, highBound)); консоль журналы (қысылған); > 100;

Number класының функциясын немесе кеңейтімін жасауға болады.

Бұл мақалада біз сандарды, математикалық операторларды, санды жолға және керісінше түрлендіру жолдарын, сондай-ақ басқа да көптеген маңызды сәттерді егжей-тегжейлі қарастырамыз.

isFinite функциясы

isFinite функциясы аргументтің соңғы сан екенін тексеруге мүмкіндік береді.

Аргумент Infinity , -Infinity , NaN болса немесе осы арнайы сандық мәндердің біріне шығарылатын болса, бұл функция жауап ретінде жалған мәнін қайтарады. Әйтпесе, бұл функция true қайтарады.

IsFinite(73); // true isFinite(-1/0); // false isFinite(Infinity); // false isFinite(NaN); // false isFinite("Мәтін"); // жалған

isFinite жаһандық функциясына қоса, JavaScript-те Number.isFinite әдісі де бар. Ол, isFinite-тен айырмашылығы, аргументті санға түрлендіруге мәжбүрлемейді.

IsFinite("73"); // true Number.isFinite("73"); // жалған

isNaN функциясы

isNaN функциясы аргументтің сан екенін немесе біреуге түрлендіруге болатынын анықтауға арналған. Олай болса, isNaN функциясы жалған мәнді қайтарады. Әйтпесе ол шындықты қайтарады.

IsNaN(NaN); //true isNaN("25px"); //шын, өйткені 20px - бұл NaN(25.5) сан емес; //false isNaN("25,5"); //false isNaN(" "); //жалған, өйткені бос орын немесе бірнеше бос орындар 0 isNaN(null) мәніне түрлендіріледі; //жалған, өйткені нөлдік мән 0-ге түрлендірілді isNaN(true); //жалған, өйткені ақиқат 1 isNaN(false) мәніне түрлендірілді; //жалған, өйткені жалған мән 0-ге түрлендіріледі

Бұл әрекетті трансляция түрінсіз орындау қажет болса, Number.isNaN әдісін пайдаланыңыз. Бұл әдіс тілге ECMAScript 6 нұсқасынан бастап енгізілген.

Жолды санға қалай анық түрлендіруге болады?

Келесі әдістерді пайдаланып жолды санға нақты түрде шығаруға болады:

1. Қолдану біртұтас оператор +Мәннің алдына қойылады.

+"7,35"; // 7.35 +"мәтін"; // НаН

Бұл әдіс жолдың басындағы және соңындағы бос орындарды, сондай-ақ \n (жол арнасы) елемейді.

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

Бұл әдісті пайдаланған кезде бос жол немесе бос орындар мен \n тұратын жол 0 санына аударылатынына назар аудару керек. Сонымен қатар, ол нөлдік деректер түрін және логикалық мәндерді түрлендіреді саны.

Нөл; //0 +шын; //1 +жалған; //0 +" "; //0

2. parseInt функциясы. Бұл функция түрлендіруге арналған бүтін санға аргумент. Қолдануға қарсы біртұтас оператор +, бұл әдіс жолды санға түрлендіруге мүмкіндік береді, онда барлық таңбалар сандық емес. Ол бірінші таңбадан бастап жолды түрлендіруді бастайды. Және ол сандық таңба болып табылмайтын таңбаны кездестірген бойда бұл функция жұмысын тоқтатады және алынған санды қайтарады.

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

Бұл функция әртүрлі санау жүйелерімен (екілік, сегіздік, ондық, он алтылық) жұмыс істей алады. Санау жүйесінің негізін көрсету 2 аргумент арқылы жүзеге асады.

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

parseInt функциясына қосымша JavaScript-те Number.parseInt әдісі бар. Бұл әдіс parseInt функциясынан еш айырмашылығы жоқ және JavaScript-ке ECMASCRIPT 2015(6) спецификациясымен енгізілген.

3. parseFloat функциясы. parseFloat функциясы parseInt функциясына ұқсас, тек ол аргументті бөлшек санға түрлендіруге мүмкіндік береді.

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

Сонымен қатар, parseFloat функциясы, parseInt-тен айырмашылығы, 2 аргументі жоқ, сондықтан ол әрқашан жолды ондық санау жүйесіндегі сан ретінде қарастыруға тырысады.

ParseFloat("3.14"); parseFloat("314e-2"); parseFloat("0,0314E+2");

parseFloat функциясына қосымша JavaScript-те Number.parseFloat әдісі бар. Бұл әдіс parseFloat функциясынан еш айырмашылығы жоқ және JavaScript-ке ECMASCRIPT 2015(6) спецификациясымен енгізілген.

Санды жолға түрлендіру

toString әдісі арқылы санды жолға айналдыруға болады.

(12.8).toString(); //"12,8"

toString әдісі сонымен қатар санды жолға нақты шығару керек екенін ескере отырып, санау жүйесінің негізін көрсетуге мүмкіндік береді:

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

Айнымалының сан екенін қалай тексеруге болады

Айнымалы мәннің сан екенін келесі әдістердің бірін пайдаланып анықтауға болады:

1. isNaN және isFinite функцияларын пайдалану:

// myVar айнымалы болып табылады, егер (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) ( //myVar - бұл сан немесе оған трансляциялауға болады );

Функция ретінде:

// функция функциясы isNumeric(мән) (қайтару !isNaN(parseFloat(мән)) && isFinite(parseFloat(мән)); ) // қолданыс var myVar = "12px"; console.log(isNumeric(myVar)); //шын

Бұл әдіс көрсетілген мәннің сан екенін немесе оған түрлендіруге болатынын анықтауға мүмкіндік береді. Бұл нұсқа сан ретінде бос жолды, бос орындар жолын санамайды, null , Infinity , -Infinity , true және false.

2. typeof операторын және isFinite, isNaN функцияларын пайдалану:

// мәннің сан екенін тексеретін функция isNumber(мән) (мәннің түрін қайтару === "(!LANG:сан)" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Бұл функция көрсетілген мәннің Number түріндегі екенін және Infinity, -Infinity және NaN арнайы мәндерінің бірі емес екенін анықтайды. Олай болса, бұл функция шын мәнін қайтарады.

3. ECMAScript 6 Number.isInteger(мән) әдісін пайдалану. Бұл әдіс көрсетілген мәннің бүтін сан екенін анықтауға мүмкіндік береді.

Number.isInteger("20"); //жалған, өйткені бұл әдіс жолды Number.isInteger(20) санына аудармайды; //шын, өйткені берілген мән – сан

Жұп және тақ сандар

Келесі функцияларды пайдаланып санның жұп немесе тақ екенін тексеруге болады:

// Санның жұп екенін тексеру функциясы isEven(n) функциясы (қайтару n % 2 == 0; ) // Санның тақ екенін тексеру функциясы isOdd(n) (қайтару Math.abs(n % 2) == 1;)

Бірақ мұндай тексеруді орындамас бұрын, көрсетілген мәннің сан екеніне көз жеткізген жөн:

мән=20; егер (Number.isInteger(мән)) ( if (isEven(мән)) ( console.log("Number" + value.toString() + " - жұп"); ) )

Javascript тіліндегі қарапайым сандар

Біз қолданатын мысалды қарастырайық Javascript қарапайым 2-ден 100-ге дейінгі сандар.

// Санның жай екенін тексеретін функцияPrime(мән) функциясы (if (isNaN(мән) || !isFinite(мән) || мән%1 || мәні)< 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);

Javascript-те санды дөңгелектеу

JavaScript тілінде бөлшек санды бүтін мәнге дейін дөңгелектеудің әртүрлі жолдары бар.

1. Ол үшін арнайы әзірленген Math.floor , Math.ceil және Math.round әдістерін пайдалану. Math.floor әдісі бөлшек санды ең жақын бүтін санға дейін дөңгелектейді, яғни. жай бөлшек бөлігін алып тастайды. Math.ceil бөлшек санды ең жақын бүтін санға дейін дөңгелектейді. Math.round бөлшек бөлігінің мәніне байланысты санды жоғары немесе төмен дөңгелектейді. Бөлшек бөлігі 0,5-тен үлкен немесе тең болса, онда жоғары, әйтпесе айналдыру төмен болады.

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

2. toFixed(дәлдік) әдісін қолдану. Бұл әдіс санның бөлшек бөлігін көрсетілген дәлдікке дейін дөңгелектейді. Дөңгелектеу нәтижесі жол ретінде қайтарылады.

Console.log(7.987.toFixed(2)); //"7,99"

Егер санның көрсетілген дәлдігін қалыптастыру үшін ондық таңбалар жеткіліксіз болса, онда ол нөлдермен толтырылады.

Console.log(7.987.toFixed(5)); //"7,98700"

3. toPrecision(precision) әдісі арқылы. Бұл әдіс көрсетілген дәлдікпен санды білдіреді. Бұл ретте ол тек бөлшекті ғана емес, санның бүтін бөлігін де дөңгелектей алады. Алынған санды тұрақты нүктедегі немесе экспоненциалды түрдегі нәтижеге байланысты осы әдіспен көрсетуге болады.

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. Логикалық ЕМЕС немесе НЕМЕСЕ операторларын пайдалану.

//қос логикалық терістеу арқылы console.log(~~7.9); //7 // логикалық НЕМЕСЕ нөлді пайдалану арқылы: console.log(7.9^0); //7

Санның бүтін және бөлшек бөлігі

Math.floor() және parseInt() әдістері арқылы санның бүтін бөлігін алуға болады:

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

Процент (%) операторы арқылы санның бөлшек бөлігін алуға болады. Бұл оператор бірінші санды екінші санға бөлуден алынатын қалдықты қайтарады. Бұл жағдайда 2-ші сан ретінде 1 қолданылуы керек.

Console.log(7,21%1); // 0,20999999999999996 // 2 ондық таңбаға дейін дәл console.log((7,21%1).toFixed(2)); // "0,21"

Сонымен қатар, бөлшек бөлікті есептеулер арқылы да алуға болады:

var number = 7,21; var fractionNumber = сан - Math.floor(Math.abs(сан)); console.log(бөлшек саны); // 0,20999999999999996

Бөлінетін сан

Процент операторы арқылы санның біркелкі бөлінетінін анықтауға болады:

нұсқа саны = 9; // егер 3-ке бөлетін санның қалдығы 0 болса, онда иә, әйтпесе жоқ if (сан%3==0) ( console.log («" + сан + " саны 3-ке бөлінеді»); ) басқа ( console. log("Сан " + сан + " 3-ке бөлінбейді"); )

Санды пішімдеу

JavaScript тілінде toLocaleString() әдісі тілге (операциялық жүйенің тіл параметрлері) сәйкес санның шығысын пішімдеуге мүмкіндік береді.

Мысалы, жүйеде әдепкі бойынша орнатылған аймақтық стандарттарға сәйкес нөмірді пішімдейік:

var number = 345,46; console.log(number.toLocaleString()); //"345,46"

Мысалы, санды Ресейдің аймақтық стандарттарына (ru) сәйкес пішімдейік:

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

Бұл әдісті санды валюта ретінде пішімдеу үшін де пайдалануға болады:

Console.log((2540.125).toLocaleString("ru-RU",(стиль:"валюта", валюта:"RUB"))); //"2,540,13 ₽" console.log((89.3).toLocaleString("ru-RU",(стиль:"валюта", валюта:"USD"))); //"$89,30" console.log((2301.99).toLocaleString("ru-RU",(стиль:"currency", валюта:"EUR"))); //"€2 301,99"

Санды пайызбен көрсету:

Console.log((0.45).toLocaleString("ru-RU",(стиль:"пайыз"))); //"45%"

Санды сандарға бөліңіз (useGrouping сипаты):

Console.log((125452.32).toLocaleString("ru-RU",(топтастыруды пайдалану:true))); //"125 452,32"

Ондық бөлшектен кейін белгілі бір цифрлар (2) бар санды басып шығарыңыз:

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

Сандарды салыстыру

JavaScript-те сандарды салыстыру үшін келесі операторлар қолданылады: == (тең), != (тең емес), > (үлкен),< (меньше), >= (үлкен немесе тең),<= (меньше или равно).

Мысалы, екі санды салыстырайық:

Console.log(2>3); //false console.log(5>=3); //шын

Бөлшек бөлігі бар сандарды салыстыру кезінде осы есептеулер кезінде орын алуы мүмкін қателерді ескеру қажет.

Мысалы, JavaScript-те сандардың қосындысы (0,2 + 0,4) 0,6-ға тең емес:

Console.log((0,2+0,4)==0,6); //жалған

Барлық есептеулер 2-ші санау жүйесіндегі компьютер немесе басқа электрондық құрылғы арқылы жасалғандықтан қателер туындайды. Анау. кез келген әрекетті орындамас бұрын компьютер алдымен өрнекте берілген сандарды 2 санау жүйесіне түрлендіруі керек. Бірақ 2-ші санау жүйесінде кез келген бөлшек ондық санды дәл көрсету мүмкін емес.

Мысалы, 0,25 10 саны екілік жүйеге дәл түрленеді.

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

Мысалы, 0,2 10 санын 2 жүйесіне белгілі бір дәлдікпен ғана түрлендіруге болады:

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

Нәтижесінде бұл қателер екі санның қосындысын есептеуге және салыстыру нәтижелеріне әсер етеді. Анау. JavaScript бұл жазбаны келесідей көретіні белгілі болды:

0.6000000000000001==0.6

Бөлшек бөлігі бар сандарды есептеу немесе көрсету кезінде сіз әрқашан мұны істеу дәлдігін көрсетуіңіз керек.

Мысалы, toFixed() және toPrecision() әдістерін пайдаланып 2 ондық таңбаға дейінгі сандарды салыстырыңыз:

//әдісі toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //toPrecision() әдісі console.log((0,2+0,4).toPrecision(2)==(0,6).toPrecision(2)); //шын

Негізгі математикалық амалдар

JavaScript-те келесі математикалық операторлар бар: + (қосу), - (алу), * (көбейту), / (бөлу), % (бөлудің қалдығы), ++ (мәнді 1-ге арттыру), -- (мәнді 1-ге азайту ).

6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, яғни. 6:3=2 => 6-3*2 => демалыс(0) 5%2 //1, яғни. 5:2=2(,5) => 5-2*2 => демалыс(1) 7,3%2 //1,3, яғни. 7.3:2=3(.65) => 7.3-2*3 => rest(1.3) //операция нәтижесінің таңбасы % бірінші мәннің белгісіне тең -9%2.5 //-1.5, яғни. 9:2,5=3(,6) => 9-2,5*3 => демалыс(1,5) -9%-2,5 //-1,5, яғни. 9:2,5=3(,6) => 9-2,5*3 => демалыс(1,5) -2%5 //-2, яғни. 2:5=0(.4) => 2-5*0 => демалыс(2) x = 3; консоль журналы(x++); //3 көрсетеді, содан кейін y мәнін 4-ке орнатады console.log(x); //4 x = 3; консоль журналы(++x); //4 жинайды және x = 5 шығарады; консоль журналы(x--); //5, y шығарады, содан кейін 4 console.log(x) орнатады; //4 x = 5; консоль журналы(--x); //4-ке орнатады және шығарады Сонымен қатар, JavaScript-те біріктірілген операторлар бар: 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; консоль журналы(x); //9 x = 3; y=6; x-=y; консоль журналы(x); //-3 x = 3; y=6; x*=y; консоль журналы(x); //18 x = 3; y=6; x/=y; консоль журналы(x); //0,5 x = 3; y=6; x%=y; консоль журналы(x); //3

Бұл теріс сандар үшін де жұмыс істеу үшін @MarkElliot жауабын түзетеді:

Vardiv = Math.trunc(y/x); var rem = y % x;

Математикалық әдістердің биттік операторларға қарағанда артықшылығы бар екенін ескеріңіз, олар 2 31-ден үлкен сандармен жұмыс істейді.

JavaScript теріс сандардың жынысын және оң жақтағы бүтін емес сандардың қалған бөлігін математикалық анықтамаларға сәйкес есептейді.

FLOOR "параметрден кіші ең үлкен бүтін сан" ретінде анықталады, осылайша:

  • оң сандар: FLOOR(X) = X санының бүтін бөлігі;
  • теріс сандар: FLOOR(X) = X минус 1 бүтін бөлігі (өйткені ол параметрден КІШІрек, яғни теріс болуы керек!)

REMAINDER бөлудің «қалдығы» ретінде анықталады (евклид арифметикасы). Дивиденд бүтін сан болмаса, фактор әдетте бүтін сан емес, яғни қалдық болмайды, бірақ егер фактор бүтін болуға мәжбүр болса (және бұл қалдықты алуға тырысқанда немесе өзгермелі модульді алуға тырысқанда болады) нүкте нөмірі ), анық, бүтін емес «сол жақ» болады.

JavaScript барлығын күткендей есептейді, сондықтан бағдарламашы дұрыс сұрақтар қоюға мұқият болуы керек (және адамдар сұралған нәрсеге мұқият жауап беруі керек!) Яриннің бірінші сұрағы ЕМЕС: «X-ның Y-ге бүтін бөлімі деген не?». оның: "Берілген бүтін санның басқасына қанша рет баратыны." Оң сандар үшін жауап екеуі үшін бірдей, бірақ теріс сандар үшін емес, өйткені бүтін бөлу (бөлінгішке бөлу) саннан (бөлгішке) «басқасына барады» (дивиденд) -1 кем болады. Басқаша айтқанда, FLOOR теріс санды бүтін бөлуге дұрыс жауапты қайтарады, бірақ Ярин бұл туралы сұраған жоқ!

gammax дұрыс жауап берді, бұл код Яриннің нұсқаулары бойынша жұмыс істейді. Екінші жағынан, Самуэль қателеседі, ол математиканы орындамады, менің ойымша, ол оның шынымен жұмыс істейтінін көрген болар еді (сонымен бірге ол оның мысалының бөлгіші не екенін айтпады, бірақ 3 болды деп үміттенемін) :

Қалдық = X% Y = -100% 3 = -1

GoesInto = (X - қалдық) / Y = (-100 - -1) / 3 = -99 / 3 = -33

Айтпақшы, мен Firefox 27.0.1-де кодты сынадым, ол оң және теріс сандармен, сондай-ақ дивидендтер мен бөлгіштер үшін бүтін емес мәндермен күткендей жұмыс істеді. Мысалы:

100,34 / 3,57: GoesInto = -28, қалдық = -0,3800000000000079

Иә, мәселе бар екенін байқадым жоғары дәлдік, бірақ оны тексеруге уақытым болмады (бұл Firefox-та, Windows 7-де немесе процессорымның FPU-да ақау бар ма, білмеймін). Дегенмен, тек бүтін сандарды қамтитын Яриннің сұрағы үшін gammax коды жақсы жұмыс істейді.

Кесілген нәтижені алу үшін parseInt функциясын пайдалануға болады.

ParseInt(a/b)

Қалғанын алу үшін mod операторын пайдаланыңыз:

parseInt негізгі 10 radix параметрін пайдаланбау үшін жолдары бар кейбір қателіктерге ие

ParseInt("09", 10)

Кейбір жағдайларда санның жолдық көрінісі ғылыми белгі болуы мүмкін, бұл жағдайда parseInt дұрыс емес нәтиже береді.

ParseInt(100000000000000000000000000000000, 10) // 1e+32

Бұл қоңырау 1 қайтарылады.

Беттердің санын бір қадаммен есептеуге болады: Math.ceil(x/y)

Егер сіз жай ғана екі қуатпен бөлісетін болсаңыз, разрядтық операторларды пайдалана аласыз:

Бөлу2(сан) экспорттау функциясы (қайту

(Біріншісі - нақты, екіншісі - қалғаны)

Бұл әрқашан нөлге дейін қысқарады. Тым кеш екеніне сенімді емеспін, бірақ мұнда былай делінген:

intdiv(дивиденд, бөлгіш) ( бөлгіш = бөлгіш - бөлгіш % 1; егер (бөлгіш == 0) жаңа қатені жіберіңіз («нөлге бөлу»); дивиденд = дивиденд - дивиденд % 1; var rem = дивиденд % бөлгіш; қайтару ( қалдық: рем, үлес: (дивиденд - рем) / бөлгіш ); )

Мен разрядтық операторлардың сарапшысы емеспін, бірақ бүтін санды алудың тағы бір жолы бар:

Варнум = ~~(a/b);

Бұл теріс сандар үшін де жақсы жұмыс істейді, ал Math.floor() дұрыс емес бағытта айналады.

Бұл да дұрыс сияқты:

Varnum = (a / b) >> 0;

Math.floor(операция) операцияның дөңгелектенген мәнін қайтарады.

1-мысал сұрақ:

Var x = 5; өзгеру = 10,4; varz = Math.floor(x + y); консоль журналы(z);

Префикс:

2-мысал сұрақ:

Var x = 14; өзгеру = 5; varz = Math.floor(x%y); консоль журналы(x);

Префикс:

Кейбір у саны мен кейбір бөлгіш х үшін бөлінді мен қалдықты (қалдық) келесідей есептеңіз:

Var quotient = Math.floor(y/x); var қалдық = y % x;

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
рахмет. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!