JavaScript konversija virknē. JavaScript: datu tipa konvertēšana

JavaScript ir intensīvākā valoda (precīzāk, vāji drukāts vai dinamiski ievadīts). Tas nozīmē, ka mums nevajadzētu precizēt mainīgo veidu, kad to paziņoja. Iekšoze dod JavaScript elastību un vienkāršību, kas vēlams par skriptu valodu (lai gan šīs funkcijas saņem cenu trūkuma stingrību, kas ir svarīga ilgām un sarežģītākām programmām, kas bieži ir rakstītas stingrākajās valodās, piemēram, C vai Java). Svarīga elastīga darba iezīme ar datu tipiem JavaScript ir automātiskās datu transformācijas, ko veic tulks. Piemēram, ja document.write () metode tiek pārraidīta, JavaScript automātiski pārveido to līdzvērtīgu virknes pārstāvību. Līdzīgi, pārbaudot virknes vērtību, ja instrukciju stāvoklis, JavaScript automātiski pārveido šo virkni uz loģisku vērtību - viltus, ja virkne ir tukša, un patiesā citādi.

Galvenais noteikums ir tas, ka tad, kad viena veida vērtība notiek kontekstā, ja ir nepieciešama kāda cita veida vērtība, JavaScript automātiski cenšas pārvērst vērtību vēlamajā veidā. Tāpēc, piemēram, kontekstā, kas uzņemas loģisku mainīgo, numurs tiek pārvērsts par loģisku vērtību.

Stīgu kontekstā objekts tiek pārvērsts virknē. Montāža JavaScript ciparu kontekstā cenšas pārvērsties uz numuru.

Konversija "Elementary tipa objekts"
Piemēram, loģiskā kontekstā visi turpmākie objekti tiek pārvērsti patiesi:

Jaunais Būla (False) // Iekšējā vērtība ir vienāda ar nepareizu, bet objektu
// pārveidots par patiesu
Jauns numurs (0)
Jauna virkne (")
Jauns masīvs ()

Objektu pārveidošana numurā sākas ar šīs objekta vērtības () metodi. Lielākā daļa priekšmetu mantojumu standarta metode Valueof () klases objekts, kas vienkārši atgriež objektu. Tā kā standarta vērtība () metode neatgriežas elementāro vērtību, JavaScript, tad mēģina pārvērst objektu uz numuru, zvanot uz tās tostring () metodi un pārveidojot iegūto virkni. Par masīviem tas noved pie interesantiem rezultātiem. Atgādināt, ka tostring () metode pārvērš masīva elementus virknē, un pēc tam atgriež šo rindu savienojumu ar komatiem starp tām. Līdz ar to masīvs bez elementiem tiek pārvērsti tukšā virknē, kas tiek pārveidota par 0! Turklāt, ja masīvs sastāv no viena elementa, numurs n, masīvs tiek pārvērsts virknes attēlojumā šā numura, kas pēc tam tiek pārveidots atpakaļ uz numuru N.

Ja masīvs satur vairāk nekā vienu elementu, vai arī tā vienīgais elements nav numurs, masīvs tiek pārvērsts NAN. JavaScript kontekstā ne vienmēr ir noteikts nepārprotami! Operators + un salīdzināšanas operatori (un\u003e \u003d) strādā gan ar cipariem, gan virknēm, tāpēc, kad objekts tiek izmantots ar vienu no šiem operatoriem, nav skaidrs, kas tas ir jāpārveido uz numuru vai virknē. Vairumā gadījumu JavaScript vispirms mēģina pārvērst objektu, zvanot uz vērtību () metodi. Ja šī metode atgriež elementāro vērtību (parasti numuru), šī vērtība tiek izmantota. Tomēr bieži vien vērtība () vienkārši atgriež objektu bez konvertēšanas; Šajā gadījumā JavaScript, tad mēģina pārvērst objektu uz virkni, izmantojot Tostring () metodi zvanu. Šim konversijas noteikumam ir tikai viens izņēmums: ja datuma objekts tiek izmantots kopā ar + operatoru, konversija tiek veikta, izmantojot toString () metodi. Šī izņēmuma esamība ir saistīts ar to, ka datumam ir gan tostring () metode un vērtība () metode. Lietojot datumu ar operatoru + gandrīz vienmēr ir nepieciešams virknes savienojums. Bet, kad datums ir iesaistīts salīdzināšanas operācijās, gandrīz vienmēr ir nepieciešams veikt skaitlisku salīdzinājumu, lai noteiktu, kuri no diviem laika posmiem bija vēl viens.

Lielākā daļa objektu vai nav vērtības metodes (), vai šī metode neatgriež noderīgus rezultātus.

Kad operators + tiek izmantots objektam, virknes savienojums parasti notiek, nevis papildinājums. Kad salīdzināšanas operators tiek piemērots objektam, virknes salīdzinājums parasti tiek veikts, nevis ciparu.

Objekta definēšana Īpaša metode Vērtība () var izturēties atšķirīgi. Nosakot vērtību () metodi, atgriežot numuru, jūs varat piemērot aritmētiskos un citus paziņojumus jūsu objektam, bet jūsu objekta pievienošana netiks veikta, kā paredzēts: TOSTRING () metode vairs netiek saukta un virkne pārstāvniecību Numurs, kas atdots ar metodi, ir iesaistīts konatenācijas vērtībā ().

Visbeidzot, atcerieties, ka vērtība () metode netiek saukta par tonumber (), stingri runājot, tās uzdevums ir pārvērst objektu jēgpilnā elementārā vērtībā, tāpēc dažiem objektiem var būt vērtības () metodes, kas atgriež rindās.

Nepārprotami konversijas veidi
Java-skripts nenosaka transformācijas operatoru kā C, C ++ un Java valodās, bet nodrošina līdzīgus līdzekļus. JavaScript 1.1 (un ECMA-262) numurs (), Būla (), virkne () un objektu () var saukt ne tikai kā dizaineriem, bet arī kā funkcijas. Šādā veidā šīs funkcijas cenšas pārvērst savu
Argumenti atbilstošā tipā. Piemēram, jūs varat pārvērst jebkuru x vērtību virknei, izmantojot virkni (X) un jebkuru Y vērtību, izmantojot objektu (Y).

Ir vairākas vairāk metodes, kas var būt noderīgas, lai veiktu skaidras tipa transformācijas. Lai pārvērstu vērtību uz virkni, padara to par balstīšanu ar tukšu virkni:

Var x_as_string \u003d x + "";

Lai pārvērstu vērtību uz numuru, no tā atskaitiet nulli:

Var x_as_number \u003d x - 0;

Ir iespējams pārveidot jebkuru vērtību loģiskai vērtībai, izmantojot operatoru!, Divreiz lieto:

Var x_as_boolean \u003d !! x;

Sakarā ar JavaScript tendenci automātiski konvertēt datus uz nepieciešamo Šis brīdis Tips, nepārprotami reklāmguvumi parasti nav nepieciešami. Tomēr reizēm tie ir noderīgi, un to var piemērot, lai programma būtu skaidrāka un precīzāka.

Skaitļu pārveidošana virknē
Numuru transformācija virknē tiek veikta JavaScript, iespējams, biežāk nekā citi. Lai gan tas parasti notiek automātiski, ir vairāki noderīgi veidi, kā skaidri pārveidot šādi. Divi mēs jau esam redzējuši:

Var String_value \u003d virkne (numurs); // izmantojot virknes dizaineru ()
// kā funkcija
Var string_value \u003d numurs + ""; // Saskaņošana ar tukšu virkni

Vēl viena iespēja nodrošina metodi toostatring ():

String_value \u003d numurs.Tostring ();

Numura objekta tostra () metode (elementārās ciparu vērtības tiek pārvērstas uz numuru objektiem, lai jūs varētu zvanīt uz šo metodi) pieņem izvēles argumentu, kas nosaka bāzes numuru sistēmas, uz kuru tiks veikta konversija. Ja arguments nav norādīts, transformācija tiek veikta pēc bāzes 10. bet jūs varat pārvērst numurus ar citiem bāzēm (no 2 līdz 36). Piemēram:

Var n \u003d 17;
binārā_string \u003d n.tostring (2); // vienādi "10001"
Oktal_string \u003d "0" + n.tostring (8); // Vienlīdz "021"
hex_string \u003d "0x" + n.tostring (16); // vienlīdz "0x11"

Trūkst JavaScript versiju 1.5 versijai, ir prombūtne standarta modeĻaujiet jums norādīt rindas decimālo zīmju skaitu, kas izriet no skaitļa pārveidošanas vai pieprasa eksponenciālu apzīmējumu. Tas var sarežģīt numurus ar tradicionāliem formātiem, piemēram, naudas vērtībām.

Ecmascript V3 un JavaScript 1.5 apiet šo šķērsli, pievienojot trīs jaunu konversijas metodi rindā uz numuru klasi. Tofixed () metode pārvērš numuru uz virkni un parāda norādīto skaitu skaitu pēc decimālā punkta, neizmantojot eksponenciālo apzīmējumu. TOEXPONENCENCY () metode pārvērš numuru uz virkni, ierakstot to eksponenciālo apzīmējumu ar vienu ciparu pirms decimālā punkta un norādīto numuru skaitu pēc tā. TopRecision () metode parāda numuru, izmantojot norādīto nozīmīgo ciparu skaitu. Ja šāds skaits ievērojamu ciparu nepietiek, lai izvadītu visu daļu no numura, tas tiek reģistrēts eksponenciālajā apzīmējumā. Lūdzu, ņemiet vērā, ka visas trīs metodes pareizi noapaļoja iegūtos līnijas skaitļus. Paskaties šādus piemērus:

Var n \u003d 123456.789;
n.tofixed (0); // "123457"
n.tofixed (2); // "123456,79"
N.toexponential (1); // "1.2E + 5"
N.toexponential (3); // "1.235E + 5"
N.toprecision (4); // "1.235E + 5"
N.toprecision (7); // "123456,8"

Rindu konversija numuros
Mēs esam redzējuši, ka skaitliskā kontekstā līnijas pārstāvošie numuri tiek automātiski pārveidoti par reāliem skaitļiem. Kā redzams iepriekš, šī konversija var būt skaidri:

VaR numurs \u003d numurs (string_value);
VaR numurs \u003d string_value - 0;

Šāda transformācija ir neērta sakarā ar pārmērīgu stingrību. Tas darbojas tikai ar decimālskaitļiUn, lai gan konversija ļauj vadošajām un aizvēršanai atstarpes, tas neļauj nekādas neendētas rakstzīmes pēc numura līnijas. Lai iegūtu elastīgākas transformācijas, varat izmantot parsint () un paruze () funkcijas. Šīs funkcijas tiek pārveidotas un atgriezta jebkurš numurs, kas atrodas rindas sākumā, ignorējot jebkādas slēgšanas ciparu rakstzīmes. Parseint () funkciju procesi ir tikai veseli skaitļi, un parsefloats () ir gan veseli skaitļi, gan peldošie punktu numuri. Ja virkne sākas ar "0x" vai "0x", parpsint () interpretē to kā heksadecimālo numuru. Piemēram:

Parseint ("3 akls pelēm"); // atgriež 3.
Paruzefloats ("3,14 metri"); // atgriežas 3.14.
Parpsint ("12.34"); // atgriežas 12.
Parpsint ("0xff"); // atgriež 255.

Parseint () funkcijai var būt otrs arguments, kas norāda uz procesa numura skaita bāzi. Derīgas vērtības - no 2 līdz 36. piemēram:

Parpsint ("11", 2); // atgriež 3 (1 * 2 + 1)
Parpsint ("ff", 16); // atgriež 255 (15 * 16 + 15)
Parpsint ("zz", 36); // atgriež 1295 (35 * 36 + 35)
Parpsint ("077", 8); // atgriež 63 (7 * 8 + 7)
Parpsint ("077", 10); // atgriež 77 (7 * 10 + 7)

Ja parseint () un pareflats () nevar pārvērst norādīto virkni uz numuru, viņi atgriež Nan.

Parpsint ("vienpadsmit"); // atgriež Nan.
Paruzsflats ("$ 72,47"); // atgriež Nan.

Nav nekādas atšķirības, kāda veida mainīgais tiek izmantots izteiksmē. Ja izteiksme ir matemātiska, visi tās mainīgie tiks automātiski interpretēti kā cipari. Ja līnijas tiek apstrādātas, visi "dalībnieki" ir uzskatāmi par līnijām. Tomēr reklāmguvumu uzdevums JavaScript "rinda uz numuru" pastāv daudz plašākā kontekstā.

JavaScript metodes rindu konversijas numuros

Arsenālās metodes virknes konvertēšanai skaits nav liels, bet pietiekams visos vienkāršos gadījumos. Šeit JavaScript (jo īpaši iesācējiem) ir ceļš no vienkāršas līdz sarežģītiem praktiskos piemēros.

Piemēram apraksta četras dažādas līnijas. Katrā produkcijas veidam pirmajā blokā mainīga funkcija Typeof ir definēts kā virkne. Tad katra līnija ir ļoti vienkārši pārveidota par numuru. Otrajā izejas blokā mainās mainīgie pēc transformācijas ir redzami, to veids ir kļuvis par numuru. JavaScript ParateFloat konversijas piemērs ir īpaši indikatīvs: tas bija "12e + 3", tas kļuva par "12000".

Izmaiņas, konvertējot virkni uz numuru, var būt nozīmīgs! Bet tikai pirmās rakstzīmes ir svarīgas: tām jābūt ciparu. Ja nav viens digitālais simbols, rezultāts būs nan.

Progress "ir kļuvis" pēc numura reverse transformācija ne vienmēr ir tāda pati virkne. Šo brīdi var izmantot, lai pārbaudītu skaitliskās informācijas ievadīšanas pareizību.

Parastās transformācijas metodes

Ir veseli skaitļi, un ir frakcionēti, attiecīgi, JavaScript rinda uz numuru konvertē:

  • parpsint;
  • parsefloats.

Vispārējais gadījums tiek īstenots, izmantojot virkni vienkāršā matemātiskā izteiksmē.

Tas ir pietiekami, lai ievietotu simbolu virknes "+" priekšā, un, ja tajā ir skaitlis, izteiksmes rezultāts būs numurs. Mainīgās vērtības vērtība var mainīties, bet veids vienmēr mainīsies: tips parādīs numuru, nevis virkni. Ir svarīgi saprast, ka transformēta mainīgā izmantošana līnijas izteiksmē var parādīt pilnīgi atšķirīgu rezultātu.

JavaScript iesācējiem šajā kontekstā ir ļoti vienkārša. Ir grūtāk saprast vesela skaitļa konvertēšanas darbu ar passSseint metodi, jo tas darbojas mašīnā decimālā sistēma Numurs, bet var interpretēt virkni kā astoņu vai heksadecimālu. Šajā gadījumā šis apstāklis \u200b\u200bne vienmēr ir atkarīgs no otrā parametra, kas norāda numuru sistēmu.

JavaScript rinda uz numuru vienmēr pagriežas, bet, ja rindā nav digitāla simbola līnijas sākumā, tad rezultāts būs nan.

Ir nepieciešams iegūt idejas par numuru sistēmām, par heksadecimālā ierakstīšanas metodēm (numurs sākas ar "0x") un astoņu skaitu (numurs sākas ar "0").

Lai saprastu JavaScript metodes nianses, pietiek ar priekšstatu par to, ko matemātiskais ieraksts ir reāls numurs.

Konversija

JavaScript ir pārlūkprogrammas valoda, jo tā ir vairāk citu valodu, kas kritizē simbolus ārpus latīņu alfabēta un ciparu galvenā komplekta. Kārtot - izdzīvota darbība. Bet ne vienmēr ir jēga nosūtīt datus serverim šķirošanas nolūkos, vieglāk un praktiskāk strādāt pārlūkprogrammā.

Lai atrisinātu šādu uzdevumu, varat pārvērst virknes simbolus to ciparu kodos vai piešķiriet pasūtīto numuru skaitļu secību skaitliskajos kodos vai ciparā un ciparā. CHARCODEAT () metode, kas piemērota virknei piešķir skaitlisko vērtību 98 IB mainīgā, tas ir, burtu kods "B". Ņemot vērā, ka burta "A" vērtība ir 97, jūs varat saņemt visu latīņu alfabēta burtu skaitu augošā secībā tiešsaistē un lielajiem burtiem. Līdzīgi kā krievu alfabēta burtiem.

Pašu šķirošanas variants, izmantojot numurus, ļauj veidot vēlamās rakstzīmju kopas. Tas ir iespējams, piemēram, "pārtvert" kirilicu un latīņu un sajauc tos, lai atstātu tikai lieliskas rakstīšanas burtus, pievienojiet cilpu un atstarpju komplektiem.

Unikāla virknes skaita veidošana

Ja burtu kods "A" ir 97, tad atšķirība starp burtu un numuru 97 dos unikālu burtu skaitu alfabētā. Apkopojot unikālus numurus katram līnijas simbolam, ir grūti iegūt unikālu šīs virknes numuru.

Ja katra virknes burta pozīcija ir piešķirta, piemēram, pozīcija:

  • 0 svars 1;
  • 1 svars 10;
  • 2 svars 100;

tas ir reizinot katra virknes rakstura unikālo skaitu par pozīcijas svaru, kurā tas ir atklāts, un summējot visus numurus, kurus var iegūt unikālu numuru un izmantot to kā nepārprotamu saraksti oriģinālajā līnijā.

Šāda rindu konvertēšana ir atgriezeniska, tas ir, pēc numura jūs vienmēr varat saņemt avota līniju. Šāda transformācija ir izdevīga, jo ar numuru jūs varat droši veikt jebkuru darbību droši kontekstā kodēšanas, kirilicas un citas vietējās iezīmes vietnes lapā, joma pieteikumu, apmeklētāju valstīs.

"Growing" vietnes lapu selektori

Tas bieži rodas uzdevums izveidot selektorus vietnes lapās, kuru vērtības nevar norādīt iepriekš, bet laika gaitā tie tiek papildināti. Pirmajā pieteikumā pirmais apmeklētājs ir pieejams tukšs selektors, lai ievadītu informāciju.

Katrs jaunais informācijas līniju ieraksts selektorā (jebkura apmeklētāja) tiek pārveidota par numuru, kas kopā ar oriģinālu tiek nosūtīta uz uzglabāšanas serveri. Kad sākas jauna darba sesija vai jauns apmeklētājs nāk, selektors vairs nav tukšs. Lapas lejupielādes lapa nāk uz pārlūku ar ne-tukšu selektoru.

Ar katru jauno selektora vērtību, tikai tad, kad tas dodas uz uzglabāšanas serveri un tikai tad, kad tas ir piešķirts unikāls digitālais kods.

Lai atrisinātu šo uzdevumu, JavaScript metodi nevar izmantot, lai izmantotu rindu. Parastā parseint un parefloat metodes ir paredzētas citai lietošanai, bet jūs varat nākt klajā ar algoritmu par virknes nepārprotamu konversiju numurā, un ne vienmēr ir atgriezenisks. Tas ir pietiekami, ka konversijas algoritma algoritms netiks atkārtots dažādos rakstzīmju komplektos līnijā.

Satiksmes optimizācija un analīze

Veidojot lapu, izstrādātājs izmanto ievērojamu informācijas apjomu. Nodrošināt apmeklētāju, lai ievadītu informāciju - labs veids Lai samazinātu vietnes vērtējumu, pateicoties tās vājās funkcionalitātes un pievilt apmeklētāju.

Pasākuma apstrādātāja piešķiršana JavaScript funkcijas veidā apmeklētāja rīcībai dažiem informācijas blokiem, jūs varat formulēt filtru, kas ļaus apmeklētājam precīzi izvirzīt mērķi, atrast nepieciešamā informācija, iegūstiet vēlamo risinājumu.

Mazo burtu informācijas pārveidošana šeit var būt patvaļīgi ietilpīga līnijas daļā un ļoti maza. Citiem vārdiem sakot, JavaScript rindas konvertēšana uz attīstītāja skaitu veic saskaņā ar tās algoritmu. Apmeklētājs manipulē saprotamu informāciju, un serverim ir minimālais datu apjoms - numurs.

Daudzu skaitļu dinamika visos apmeklētājos kontekstā precīzi zināma informācija ļauj citam JavaScript funkcijai (nevis apstrādātājam), ko sauc par servera atbildi, izmantojot AJAX mehānismu, nekavējoties reāllaikā, lai sniegtu visus apmeklētājus nepieciešamo informāciju tajā pašā laikā. Tātad sistēma darbojas.

Šī iespēja, lai pārveidotu JavaScript rindu, ir ļoti pieprasīts tiešsaistes spēļu, interaktīvo konferenču, nodošanas attīstībā tērzēšanas ziņojumi utt

Tool transformāciju izmantošana

JavaScript un CSS apstrādes kontekstā skaitliskā informācija Ļauj jums pārvaldīt lapas displeju bez servera līdzdalības. CSS noteikumi tiek būvēti kā substring, rekursīvi. Parasti parametrs ir skaitlis, kam seko vairāki burti (piemēram, "PX", "PT", "em", ...). Parametrs ir substress noteikumā, un noteikums iekļūst substrol klasē vai identifikatoru.

Recursion JavaScript.Strete. Struktūra ... dodas uz vajadzīgo numuru, pārveido no virknes uz numuru, maina to un raksta atpakaļ uz vēlamo vietu. Noteikums mainās "mašīna". Tas ir vienkāršs un ērts, nav servera līdzdalības.

Ir divi galvenie veidi, kā pārvērst virkni uz JavaScript. Viens veids ir analizēt to, un vēl viens veids - mainīt savu tipu uz numuru. Visi triki citās atbildēs (piemēram, bezgalīgi plus) nozīmē netiešo piespiešanu, piemēram, virkne uz numuru. Jūs varat arī darīt to pašu ar numuru funkciju.

Sintaktika

Var Parsed \u003d Parseint ("97", 10);

parseint un parefloat ir divas funkcijas, ko izmanto, lai analizētu rindas numuros. Sintakses analīze apstāsies klusi, ja tas ietilpst simbolā, ka tas neatzīst, ka tas var būt noderīgi stīgu sintaktiskai analīzei, piemēram, "92px", bet tas ir arī nedaudz bīstams, jo tas nedos jums nekādu kļūdu ar sliktu Ieeja, tā vietā jūs atgriežat NAN, ja virkne nesākas ar numuru. Līnijas sākumā ir ignorēts. Šeit ir piemērs tam, ko viņš dara kaut ko citādi, kas jums ir nepieciešams, un nenorāda, ka kaut kas gāja nepareizi:

Var widgetssold \u003d iepsint ("97 800", 10); // widgetssold tagad ir 97

Laba prakse vienmēr norāda kā otru argumentu. Vecajās pārlūkprogrammās, ja virkne sākās ar 0, tas tiktu interpretēts kā oktāls, ja tas netika norādīts Radix vērtība, kas piesaistīja daudzus cilvēkus pārsteigumā. Hexadecimal palaišanas uzvedība sākas, ja virkne sākas ar 0x, ja RADIX vērtība nav norādīta. 0xff. Standarts faktiski ir mainījies, izmantojot Ecmascript 5, tāpēc mūsdienu pārlūkprogrammas Vairs nedarbojas oktāls, kad resursdators ir norādīts, ja RADIX vērtība nav norādīta. Parseint saprot radikozi, lai bāzes 36, un šajā gadījumā gan augšējie un mazie burti tiek apstrādāti kā līdzvērtīgi.

String tipa maiņa pēc numura

Visi pārējie iepriekš minētie triki, kas neizmanto postsint, netieši netieši piespiežot virkni uz numuru. Es gribētu to izdarīt skaidri

Var cast \u003d numurs ("97");

Tas atšķiras no analīzes metodēm (lai gan tas joprojām ignorē atstarpes). Ir stingri: ja tas nesaprot visu līniju nekā Nan atgriežas, tāpēc jūs nevarat to izmantot 97px tipa stīgām. Tā kā jums ir nepieciešams primitīvs numurs, nevis numurs wrapper objektu, pārliecinieties, ka jums nav iestatīt jaunu pirms numura funkcijas.

Acīmredzot, reklāmguvums uz numuru dod jums vērtību, kas var būt peldēt, nevis veselu skaitli, tāpēc, ja vēlaties veselu skaitli, jums tas ir jāmaina. Ir vairāki veidi, kā to izdarīt:

Var noapaļot \u003d math.floor (numurs ("97.654")); // otru iespējas ir Math.ceil, math.round var fiksēts \u003d numurs ("97.654"). Tofixed (0); // noapaļots, nevis atdalīts var bitwised \u003d numurs ("97.654") | 0; // Nelietot lieliem skaitļiem

Jebkurš rūgta operators (šeit es esmu svētība vai, bet jūs varat arī veikt dubultu noliegumu, jo agrākā atbilde vai bitu maiņa) pārveido vērtību uz 32 bitu veselu skaitli, un lielākā daļa no tiem tiek pārvērsti parakstītā veselā skaitļa. Ņemiet vērā, ka tas ir tas Nebūs vajadzīgs lieliem veseliem skaitļiem. Ja vesels skaitlis var būt attēlots 32 bitos, tas tiks pabeigts.

~~ "3000000000.654" \u003d\u003d\u003d -1294967296 // Tas ir tāds pats kā numurs ("3000000000.654") | 0 "3000000000.654" \u003e\u003e\u003e 0 \u003d\u003d\u003d 3000000000 // neparakstīta labā maiņa sniedz jums papildu bitu "300000000000.654"\u003e \u003e\u003e 0 \u003d\u003d\u003d 3647256576 //, bet joprojām neizdodas ar lielākiem skaitļiem

Lai pareizi darbotos ar lielu skaitu, jums ir jāizmanto noapaļošanas metodes

Math.floor ("3000000000.654") \u003d\u003d\u003d 3000000000 // Tas ir tāds pats kā math.floor (numurs ("3000000000.654"))

Paturiet prātā, ka visas šīs metodes saprot eksponenciālo apzīmējumu, tāpēc 2E2 ir 200, nevis nan. Turklāt skaits saprot "bezgalību", bet analīzes metodes nav.

Pasūtījuma

Ir nepareizi, ka kāda no šīm metodēm ir tieši tas, ko vēlaties. Piemēram, man parasti ir nepieciešama kļūda, kas notiek, kad sintakses analīzes kļūme, un man nav vajadzīgs bezgalības atbalsts, izstādes dalībnieki vai vadošie trūkumi. Atkarībā no jūsu lietošanas reizēm ir lietderīgi rakstīt lietotāja konversijas funkciju.

Vienmēr pārbaudiet, vai skaita vai kāda no analīzes metožu skaits ir skaitlis, ko jūs sagaidāt. Jūs gandrīz noteikti vēlaties izmantot Isnan, lai pārliecinātos, ka numurs nav Nan (parasti tas ir vienīgais veids, kā noskaidrot, ka sintakses analīze neizdevās).

JavaScript ir 2 iebūvētās funkcijas, lai pārvērstu rindas numuros: paruzefloats () un parseint ().

parsefloat () ņem argumentu virkni, kas ir jāsaņem skaitliskā tipa, un jāatgriežas tipa pludiņa. Numurs ir jāiekļauj līnijas sākumā. Ja pēc numura līnijā joprojām ir dažas rakstzīmes, tad tās nogrieza. Daļās daļa numura jāreģistrē caur punktu (komats netiek uztverts kā separators). Gadījumā, ja parefloat () nevar pārvērst virkni, tā atgriež Nan.

Arī funkcija var apstrādāt "Num N reizināts ar 10 uz grādu x", kas programmē ir ierasts ierakstīt caur burtu e, piemēram: 0.5e6 vai 0.5e + 6. Grāds var būt arī negatīvs: 0.5e-6, kas ir 0,5 * 10 ^ -6 vai 0,5 / 1000000.

Paruze ("" 3.78 kg ") // 3.78 parefloat (" "kg33" ") // nan paruze (" "0004.111") // 4.111 paruze ("0x66") // 0 parefloat ("" 5 ". ") // 0,5 parefloat (" "-. 5" ") // -0,5 paruzsflats (" 0.5e6 ") // 500000 paruzeflats (" 0.03 + 2 ") // 3 paruzdi (" "3e- 4 "") // 0,0003 paruze ("- 3E-4" ") // -0.0003

Parseint (virkne [, RADIX]) funkcija aizņem virkni kā pirmo argumentu, to analizē un atgriež veselu skaitli (tipa vesels skaitlis). Funkcija cenšas analizēt numuru sistēmu, kurā numurs ir ierakstīts avota līnijā (piemēram, decimāldaļu, astoņu vai heksadecimālu - bet ne tikai tās). Arī numuru sistēmu var precīzi norādīt, nododot to ar otro Radix parametru. Radix parametrs var veikt jebkuru skaitu no 2 līdz 36 (sistēmās virs 10, tiek izmantotas angļu alfabēta burti no A līdz Z).

Ciparu tips 1.5E6 Funkcija nerīkojas kā paruzsa ().

Lūdzu, izlasiet tālāk redzamos piemērus tā, lai netiktu ievietoti, tiek izmantoti parsint () funkcijas darbībā.

Parseint ("25" ") // 25 PARSEINT (" "- 25") // -25 Parseint ("" 45.12 "") // 45 Parseint ("045", 10) // 45 parsint (" 70 ", 8) // 56 (70 octal sistēmā tas ir 56 decimāldaļas) parpsint (" "070") // 56 (svarīgi !!! nulle vispirms piespieda funkciju, lai analizētu virkni kā astoto numuru) Iepsint ("88" ", 8) // nan (oktālā sistēmā nav ciparu 8) parpsint (" A1 ") // nan (svarīgi !!! Noklusējuma funkcija neuztver numuru kā 16 bagāts, Ja nav pievienojot sākuma rindās 0x) parpsint ("" A1 ", 16) // 161 (šeit ir skaidri norādīts ar numuru sistēmu) parpsint (" 0xa1 ") // 161 (pareizais 16-riche numura formāts, Jūs nevarat norādīt otro parametru) parpsint ("099" ") // 0 (SVARĪGI !!! Numurs tiek uztverts kā oktāls, bet kas satur nederīgas rakstzīmes) parsint (" "0.5e6") // 0 (svarīga! !! nedarbojas kā parefloat) parpsint ("ZZ", 36) // 1295 parseint ("" - FF "") // NAN PARSEINT ("" - FF ", 16) // -255

Ja jūs apstrādājat datus no teksta lauksTas ievada lietotājam, vienmēr izmantojiet parsint () kopā ar otro Radix parametru, tas pasargās jūsu kodu no negaidītiem rezultātiem.

JavaScript ir 2 iebūvētās funkcijas, lai pārvērstu rindas numuros: paruzefloats () un parseint ().

parsefloat () ņem argumentu virkni, kas ir jāsaņem skaitliskā tipa, un jāatgriežas tipa pludiņa. Numurs ir jāiekļauj līnijas sākumā. Ja pēc numura līnijā joprojām ir dažas rakstzīmes, tad tās nogrieza. Daļās daļa numura jāreģistrē caur punktu (komats netiek uztverts kā separators). Gadījumā, ja parefloat () nevar pārvērst virkni, tā atgriež Nan.

Arī funkcija var apstrādāt "Num N reizināts ar 10 uz grādu x", kas programmē ir ierasts ierakstīt caur burtu e, piemēram: 0.5e6 vai 0.5e + 6. Grāds var būt arī negatīvs: 0.5e-6, kas ir 0,5 * 10 ^ -6 vai 0,5 / 1000000.

Paruze ("" 3.78 kg ") // 3.78 parefloat (" "kg33" ") // nan paruze (" "0004.111") // 4.111 paruze ("0x66") // 0 parefloat ("" 5 ". ") // 0,5 parefloat (" "-. 5" ") // -0,5 paruzsflats (" 0.5e6 ") // 500000 paruzeflats (" 0.03 + 2 ") // 3 paruzdi (" "3e- 4 "") // 0,0003 paruze ("- 3E-4" ") // -0.0003

Parseint (virkne [, RADIX]) funkcija aizņem virkni kā pirmo argumentu, to analizē un atgriež veselu skaitli (tipa vesels skaitlis). Funkcija cenšas analizēt numuru sistēmu, kurā numurs ir ierakstīts avota līnijā (piemēram, decimāldaļu, astoņu vai heksadecimālu - bet ne tikai tās). Arī numuru sistēmu var precīzi norādīt, nododot to ar otro Radix parametru. Radix parametrs var veikt jebkuru skaitu no 2 līdz 36 (sistēmās virs 10, tiek izmantotas angļu alfabēta burti no A līdz Z).

Ciparu tips 1.5E6 Funkcija nerīkojas kā paruzsa ().

Lūdzu, izlasiet tālāk redzamos piemērus tā, lai netiktu ievietoti, tiek izmantoti parsint () funkcijas darbībā.

Parseint ("25" ") // 25 PARSEINT (" "- 25") // -25 Parseint ("" 45.12 "") // 45 Parseint ("045", 10) // 45 parsint (" 70 ", 8) // 56 (70 octal sistēmā tas ir 56 decimāldaļas) parpsint (" "070") // 56 (svarīgi !!! nulle vispirms piespieda funkciju, lai analizētu virkni kā astoto numuru) Iepsint ("88" ", 8) // nan (oktālā sistēmā nav ciparu 8) parpsint (" A1 ") // nan (svarīgi !!! Noklusējuma funkcija neuztver numuru kā 16 bagāts, Ja nav pievienojot sākuma rindās 0x) parpsint ("" A1 ", 16) // 161 (šeit ir skaidri norādīts ar numuru sistēmu) parpsint (" 0xa1 ") // 161 (pareizais 16-riche numura formāts, Jūs nevarat norādīt otro parametru) parpsint ("099" ") // 0 (SVARĪGI !!! Numurs tiek uztverts kā oktāls, bet kas satur nederīgas rakstzīmes) parsint (" "0.5e6") // 0 (svarīga! !! nedarbojas kā parefloat) parpsint ("ZZ", 36) // 1295 parseint ("" - FF "") // NAN PARSEINT ("" - FF ", 16) // -255

Ja jūs apstrādāt datus no teksta lauka, kas ievada lietotājam, vienmēr izmantojiet parsint () kopā ar otro Radix parametru, tas aizsargās jūsu kodu no negaidītiem rezultātiem.