تبدیل جاوا اسکریپت تعداد در رشته. جاوا اسکریپت: تبدیل نوع داده

جاوا اسکریپت یک درونی ترین زبان است (دقیق تر، ضعیف تایپ شده یا به صورت پویا تایپ شده). این به این معنی است که ما نباید نوع متغیر را مشخص کنیم. این گیاه انعطاف پذیری و سادگی جاوا اسکریپت را می دهد، برای زبان اسکریپت ترجیح داده شده است (اگر چه این ویژگی ها قیمت کمبود سختی را دریافت می کنند، برای برنامه های طولانی و پیچیده ای که اغلب بر روی زبان های دقیق تر مانند C یا Java نوشته شده اند، مهم است. یکی از ویژگی های مهم کار انعطاف پذیر با انواع داده ها در جاوا اسکریپت، تغییرات داده های خودکار انجام شده توسط مترجم است. به عنوان مثال، اگر روش document.write () انتقال داده شود، جاوا اسکریپت به طور خودکار آن را به یک نماینده رشته معادل تبدیل می کند. به طور مشابه، بررسی مقدار رشته در شرایط دستورالعمل اگر، جاوا اسکریپت به طور خودکار این رشته را به یک مقدار منطقی تبدیل می کند - در صورت نادرست، اگر رشته خالی باشد و در غیر این صورت درست باشد.

قانون اصلی این است که زمانی که ارزش یک نوع در متن اتفاق می افتد، جایی که ارزش برخی از نوع دیگر مورد نیاز است، جاوا اسکریپت به طور خودکار تلاش می کند تا ارزش را به صورت دلخواه تبدیل کند. بنابراین، به عنوان مثال، در زمینه، که یک متغیر منطقی را فرض می کند، شماره به یک مقدار منطقی تبدیل می شود.

جسم در متن رشته به رشته تبدیل می شود. نصب در متن عددی جاوا اسکریپت در حال تلاش برای تبدیل به تعداد است.

تبدیل "شیء نوع ابتدایی"
به عنوان مثال، در یک زمینه منطقی، تمام اشیاء زیر به TRUE تبدیل می شوند:

جدید Boolean (FALSE) // ارزش داخلی برابر با اشتباه است، اما شی
// تبدیل به درست است
شماره جدید (0)
رشته جدید (")
آرایه جدید ()

تبدیل اشیاء در شماره با فراخوانی روش ValueOf () این شی شروع می شود. اکثر اشیاء به ارث برده اند روش استاندارد ValueOf () شیء کلاس، که به سادگی شی خود را باز می گرداند. از آنجایی که روش استاندارد ValueOf () مقدار ابتدایی را بازگرداند، جاوا اسکریپت پس از آن تلاش می کند که شی را به یک عدد تبدیل کند با فراخوانی روش ToString () و تبدیل رشته حاصل شود. برای آرایه ها، این منجر به نتایج جالبی می شود. به یاد بیاورید که روش ToString () عناصر آرایه را به رشته تبدیل می کند و سپس نتیجه پیوند این ردیف ها را با کاما بین آنها باز می گرداند. در نتیجه، یک آرایه بدون عناصر به یک رشته خالی تبدیل می شود که به 0 تبدیل می شود! علاوه بر این، اگر آرایه از یک عنصر تشکیل شده باشد، تعداد n، آرایه به یک نمایش رشته ای از این شماره تبدیل می شود، که سپس به شماره N تبدیل می شود.

اگر یک آرایه حاوی بیش از یک عنصر باشد، یا اگر عنصر تک آن یک عدد نیست، آرایه به نان تبدیل می شود. در جاوا اسکریپت، زمینه همیشه به طور واضح تعیین نمی شود! اپراتور + و اپراتورهای مقایسه (و\u003e \u003d) هر دو با اعداد و رشته ها کار می کنند، بنابراین هنگامی که جسم با یکی از این اپراتورها استفاده می شود، مشخص نیست که چه چیزی باید به یک عدد یا یک رشته تبدیل شود. در اغلب موارد، جاوا اسکریپت ابتدا تلاش می کند یک شی را با فراخوانی روش ValueOf () تبدیل کند. اگر این روش مقدار ابتدایی (معمولا شماره) را بازبینی کند، این مقدار استفاده می شود. با این حال، اغلب valueOf () به سادگی یک شی بدون تبدیل را باز می گرداند؛ در این مورد، جاوا اسکریپت سپس تلاش می کند یک شی را به رشته با استفاده از روش ToString () تبدیل کند. تنها یک استثنا به این قانون تبدیل وجود دارد: زمانی که شیء تاریخ با استفاده از اپراتور + استفاده می شود، تبدیل با استفاده از روش toString () انجام می شود. وجود این استثنا به دلیل این واقعیت است که تاریخ هر دو روش toString () و روش valuef () دارد. هنگام استفاده از تاریخ با اپراتور + تقریبا همیشه یک رشته رشته را نیاز داشت. اما زمانی که تاریخ در عملیات مقایسه دخالت می کند، تقریبا همیشه لازم است برای انجام یک مقایسه عددی به منظور تعیین اینکه کدام یک از دو نقطه زمان پیش از آن بود، مورد نیاز است.

اکثر اشیاء یا روش ValueOf را ندارند یا این روش نتایج مفید را به دست نمی آورد.

هنگامی که اپراتور + به شیء مورد استفاده قرار می گیرد، رشته رشته معمولا اتفاق می افتد، و نه علاوه بر این. هنگامی که اپراتور مقایسه به شیء اعمال می شود، یک مقایسه رشته معمولا انجام می شود، نه عددی.

تعریف شیء روش ویژه ValueOf () ممکن است به طور متفاوتی رفتار کند. با تعریف روش valueOf ()، بازگرداندن شماره، شما می توانید حساب های ریاضی و سایر اظهارات را به شی خود اعمال کنید، اما علاوه بر این، به عنوان انتظار نمی رود: روش ToString () دیگر نامیده می شود و یک نمایش رشته ای از آن نیست شماره بازگشتی با روش در ValueOf () درگیر است.

در نهایت، به یاد داشته باشید که روش ValueOf () Tonumber ()، به شدت صحبت نمی کند، وظیفه آن تبدیل یک شی به یک مقدار ابتدایی معنی دار است، بنابراین برخی از اشیاء ممکن است روشهایی که ردیف ها را بازگردانند ()

انواع تبدیل صریح
Java-Script اپراتور تحول را به عنوان زبان C، C ++ و جاوا تعریف نمی کند، اما وسایل مشابه را ارائه می دهد. در جاوا اسکریپت 1.1 (و در ECMA-262) شماره ()، boolean ()، رشته () و شی () را می توان نه تنها به عنوان طراحان، بلکه به عنوان توابع نامیده می شود. به این ترتیب ایجاد می شود، این توابع در حال تلاش برای تبدیل خود هستند
استدلال در نوع مناسب. به عنوان مثال، شما می توانید هر مقدار X را به رشته با استفاده از رشته (X) و هر مقدار Y به یک شی با استفاده از شی (Y) تبدیل کنید.

چندین تکنیک دیگر وجود دارد که می تواند برای انجام تغییرات نوع صریح مفید باشد. به منظور تبدیل یک مقدار به یک رشته، آن را با یک رشته خالی ترکیب کنید:

var x_as_string \u003d x + ""؛

برای تبدیل یک مقدار به یک عدد، صفر را از آن کسر کنید:

var x_as_number \u003d x - 0؛

ممکن است هر مقدار را به یک مقدار منطقی با استفاده از اپراتور تبدیل کنید، دو بار اعمال شده:

var x_as_boolean \u003d !! x؛

با توجه به تمایل جاوا اسکریپت به خودکار تبدیل داده ها به مورد نیاز این لحظه نوع، تبدیل صریح معمولا مورد نیاز نیست. با این حال، گاهی اوقات آنها مفید هستند و می توانند اعمال شوند تا برنامه را روشن تر و دقیق تر انجام دهند.

تبدیل اعداد در رشته
تحول اعداد در رشته در جاوا اسکریپت انجام می شود، احتمالا بیشتر از دیگران است. اگر چه معمولا به طور خودکار اتفاق می افتد، چند راه مفید برای به صراحت این نوع را تغییر می دهد. دو نفر ما قبلا دیده ایم:

var string_value \u003d رشته (شماره)؛ // با استفاده از طراح رشته ()
// به عنوان یک تابع
var string_value \u003d شماره + ""؛ // concatenation با یک رشته خالی

یکی دیگر از فرصت ها روش Toostring را فراهم می کند ():

string_value \u003d number.tostring ()؛

روش ToString () از شیء شماره (مقادیر عددی عنصر به اشیاء شماره تبدیل می شود، بنابراین شما می توانید این روش را فراخوانی کنید) یک استدلال اختیاری را قبول می کند که پایه سیستم شماره را تعیین می کند که تبدیل انجام خواهد شد. اگر استدلال مشخص نشده باشد، تبدیل توسط پایه 10 انجام می شود، اما شما می توانید اعداد را با پایگاه های دیگر (بین 2 تا 36) تبدیل کنید. مثلا:

var n \u003d 17؛
binary_string \u003d n.toString (2)؛ // به همان اندازه "10001"
octal_string \u003d "0" + n.toString (8)؛ // به همان اندازه "021"
hex_string \u003d "0x" + n.toString (16)؛ // به همان اندازه "0x11"

عدم نسخه های جاوا اسکریپت به نسخه 1.5 شامل عدم وجود است مد استانداردبه شما این امکان را می دهد که تعداد علائم دهدهی را در ردیف مشخص کنید که ناشی از تحول عدد است یا نیاز به استفاده از نماد نمایشی دارد. این ممکن است نمایش اعداد دارای فرمت های سنتی مانند مقادیر نقدی را پیچیده کند.

ECMAScript V3 و جاوا اسکریپت 1.5 از طریق اضافه کردن سه روش تبدیل جدید به خط به کلاس شماره. روش Tofixed () شماره را به رشته تبدیل می کند و تعداد مشخصی از اعداد را پس از نقطه اعشار بدون استفاده از نماد نمایشی نمایش می دهد. روش ToexPonential () شماره را به رشته تبدیل می کند، ضبط آن را در نماد نمایشی با یک رقم قبل از نقطه اعشار و تعداد مشخصی از اعداد پس از آن ضبط می کند. روش TopRecision () یک عدد را با استفاده از تعداد مشخصی از رقم های قابل توجه نشان می دهد. اگر چنین تعداد قابل توجهی از رقم های قابل توجهی به اندازه کافی برای خروجی کامل از تعداد نیست، آن را در نماد نمایشی ثبت می شود. لطفا توجه داشته باشید که هر سه روش به درستی چهره های خط تولید را به درستی گرد می کنند. به مثال های زیر نگاه کنید:

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.teprecision (4)؛ // "1.235E + 5"
n.ToPrecision (7)؛ // "123456.8"

تبدیل ردیف در اعداد
ما دیده ایم که در زمینه عددی خط خط نشان دهنده اعداد به طور خودکار به اعداد واقعی تبدیل می شود. همانطور که در بالا نشان داده شد، این تبدیل می تواند به صراحت باشد:

var number \u003d number (string_value)؛
var number \u003d string_value - 0؛

چنین تحول به دلیل سختی بیش از حد آن، ناخوشایند است. این کار تنها با آن کار می کند اعداد اعشاریو اگر چه تبدیل اجازه می دهد تا فضاهای پیشرو و بسته شدن، آن را اجازه نمی دهد هر شخصیت های غیر پرچم پس از شماره در خط. برای تحولات انعطاف پذیر تر، شما می توانید از توابع parseint () و parsefloat () استفاده کنید. این توابع تغییر یافته و توسط هر شماره موجود در ابتدای خط، نادیده گرفتن هر شخصیت غیر عددی بسته بندی شده است. تابع Parseint () فقط یک عدد صحیح را پردازش می کند و Parsefloat () هر دو عدد صحیح و تعداد نقطه شناور است. اگر رشته با "0x" یا "0x" آغاز می شود، Parseint () آن را به عنوان یک شماره هگزادسیمال تفسیر می کند. مثلا:

Parseint ("3 موش کور")؛ // بازده 3
Parsefloat ("3.14 متر")؛ // بازگشت 3.14.
Parseint ("12.34")؛ // بازگشت 12
Parseint ("0xff")؛ // 255 را بازپرداخت می کند.

تابع Parseint () ممکن است یک استدلال دوم نشان دهنده پایه تعداد شماره پردازش شده باشد. ارزش های معتبر - از 2 تا 36. به عنوان مثال:

Parseint ("11"، 2)؛ // بازده 3 (1 * 2 + 1)
Parseint ("FF"، 16)؛ // بازده 255 (15 * 16 + 15)
Parseint ("ZZ"، 36)؛ // بازده 1295 (35 * 36 + 35)
Parseint ("077"، 8)؛ // بازده 63 (7 * 8 + 7)
Parseint ("077"، 10)؛ // بازده 77 (7 * 10 + 7)

اگر Parseint () و parsefloat () نمیتوانند رشته مشخص شده را به شماره تبدیل کنند، آنها نان را باز می کنند.

Parseint ("یازده")؛ // بازگشت نان
Parsefloat ("72.47 دلار")؛ // بازگشت نان

تفاوت در نوع متغیر در بیان وجود ندارد. اگر عبارت ریاضی باشد، تمام متغیرهای آن به صورت خودکار به صورت عددی تفسیر می شوند. اگر خطوط پردازش شوند، تمام "شرکت کنندگان" عبارات به عنوان خطوط در نظر گرفته می شوند. با این حال، وظیفه تبدیل به جاوا اسکریپت "ردیف به شماره" در یک زمینه بسیار گسترده تر وجود دارد.

روش های جاوا اسکریپت تبدیل ردیف در اعداد

روش های آرسنال برای تبدیل رشته ها در اعداد بزرگ نیست، اما در تمام موارد ساده کافی نیست. در اینجا جاوا اسکریپت (برای مبتدیان به ویژه) مسیر از ساده به پیچیده در نمونه های عملی است.

مثال چهار خط مختلف را توصیف می کند. در اولین بلوک نوع خروجی هر کدام تابع متغیر Typeof به عنوان رشته تعریف شده است. سپس هر خط بسیار به سادگی به شماره تبدیل می شود. در بلوک خروجی دوم، تغییرات در متغیرها پس از تغییر قابل مشاهده است، نوع آنها تبدیل به یک عدد شده است. مثال تبدیل جاوا اسکریپت ParaseFloat به ویژه نشان دهنده است: این "12E + 3" بود، آن را "12000" شد.

تغییر هنگام تبدیل یک رشته به یک عدد می تواند قابل توجه باشد! اما تنها اولین شخصیت ها مهم هستند: آنها باید دیجیتال باشند. اگر یک نماد دیجیتال وجود نداشته باشد، نتیجه Nan خواهد بود.

تحول معکوس رشته "تبدیل شده است" توسط شماره همیشه یک رشته نیست. این لحظه می تواند مورد استفاده قرار گیرد تا صحت وارد کردن اطلاعات عددی را بررسی کند.

روش های تحول متعارف

اعداد صحیح وجود دارد و به ترتیب کسر وجود دارد، به ترتیب، ردیف جاوا اسکریپت به تعداد تبدیل شده توسط:

  • parseint؛
  • parsefloat

پرونده عمومی با استفاده از یک رشته در یک بیان ساده ریاضی اجرا می شود.

کافی است که در مقابل رشته نماد "+" قرار دهید و اگر تعداد آن در آن وجود داشته باشد، نتیجه بیان آن خواهد بود. مقدار متغیر ممکن است تغییر کند، اما این نوع همیشه تغییر خواهد کرد: Typeof شماره را نشان می دهد، نه رشته. مهم است که درک کنیم که استفاده از یک متغیر تبدیل شده در بیان خط می تواند یک نتیجه کاملا متفاوت را نشان دهد.

جاوا اسکریپت برای مبتدیان در این زمینه بسیار ساده است. دشوار است که کار یک تبدیل عدد صحیح را با روش PASRSEINT درک کنید، زیرا در دستگاه کار می کند سیستم دهدهی شماره، اما می تواند رشته را به عنوان یک هشتم یا هگزادسیمال تفسیر کند. در این مورد، این شرایط همیشه به پارامتر دوم بستگی ندارد، که سیستم شماره را نشان می دهد.

ردیف جاوا اسکریپت به شماره همیشه تبدیل می شود، اما اگر نماد دیجیتال در ردیف در ابتدای خط وجود نداشته باشد، نتیجه نانو خواهد بود.

لازم است که ایده های مربوط به سیستم های شماره، در مورد روش های ضبط هگزادسیمال (شماره با "0x") و اعداد هشتم (شماره شروع می شود با "0") ضروری است.

برای درک تفاوت های ظریف روش جاوا اسکریپت Parsefloat، به اندازه کافی به نظر می رسد که کدام رکورد ریاضی یک عدد واقعی است.

تبدیل

جاوا اسکریپت یک زبان مرورگر است، زیرا زبان های دیگر بیشتر از نمادهای خارج از مجموعه اصلی الفبای لاتین و اعداد است. مرتب سازی بر روی عملیات زنده ماندن. اما همیشه منطقی نیست که داده ها را به سرور ارسال کنید تا اهداف مرتب سازی، آسان تر و عملی تر برای کار در محل کار در مرورگر.

برای حل این کار، می توانید نمادهای رشته را به کدهای عددی خود تبدیل کنید یا یک توالی سفارش داده شده را در کدهای عددی یا رقم و رقمی خود اختصاص دهید. روش Charcodeat () اعمال شده به رشته مقدار عددی 98 متغیر IB را تعیین می کند، یعنی کد نامه "B". با توجه به اینکه ارزش کد نامه "A" 97 است، شما می توانید اعداد تمام حروف الفبا لاتین را به ترتیب صعودی بر روی مجموعه های خط و بزرگ دریافت کنید. شبیه به حروف الفبا روسی.

نوع مرتب سازی خود را از طریق اعداد به شما اجازه می دهد مجموعه های مورد نظر از شخصیت ها را تشکیل دهید. به عنوان مثال، ممکن است، به عنوان مثال، "از بین بردن" سیریلیک و لاتین و ترکیب آنها را به منظور ترک تنها نامه های نوشتن عالی، اضافه کردن به مجموعه ای از زبانه ها و فضاهای.

تشکیل یک تعداد منحصر به فرد از رشته

اگر کد نامه "A" 97 باشد، تفاوت بین نامه و شماره 97 یک شماره منحصر به فرد از حرف را در حروف الفبا ارائه می دهد. خلاصه کردن اعداد منحصر به فرد برای هر نماد خط، دشوار است تعداد منحصر به فرد از این رشته را دریافت کنید.

اگر هر موقعیتی از نامه در رشته وزن تعیین شده، به عنوان مثال، موقعیت:

  • 0 وزن 1؛
  • 1 وزن 10؛
  • 2 وزن 100؛

این تعداد تعداد منحصر به فرد هر شخصیت رشته را بر وزن موقعیت موقعیتی که در آن شناسایی می شود، ضرب می شود و با جمع کردن تمام اعداد که می توانید یک شماره منحصر به فرد دریافت کنید و از آن به عنوان یک مکاتبات مطلوب در خط اصلی استفاده کنید.

چنین تبدیل یک ردیف برگشت پذیر است، یعنی تعداد شما همیشه می توانید خط منبع را دریافت کنید. چنین تحول، سودمند است، زیرا با شماره شما می توانید هر گونه عملیات را با خیال راحت در زمینه رمزگذاری، سیریلیک و دیگر ویژگی های محلی صفحه سایت، زمینه کاربرد، کشورهای بازدید کننده ایجاد کنید.

انتخابگر صفحه "رشد"

این اغلب وظیفه ایجاد انتخاب کننده ها در صفحات سایت رخ می دهد، مقادیر آن را نمی توان پیش از آن مشخص کرد، اما در طول زمان آنها تکمیل می شود. در اولین برنامه، یک انتخاب خالی برای اولین بازدید کننده برای ورود به اطلاعات در دسترس است.

هر ورودی جدید خطوط اطلاعاتی در انتخاب (توسط هر بازدید کننده) به شماره تبدیل می شود که، همراه با اصلی، به سرور ذخیره سازی ارسال می شود. هنگامی که یک جلسه کار جدید شروع می شود یا یک بازدید کننده جدید می آید، انتخاب کننده دیگر خالی نیست. صفحه دانلود به مرورگر با یک انتخاب غیر خالی می آید.

با هر مقدار انتخاب جدید، تنها زمانی که آن را به سرور ذخیره سازی می رود و تنها یک بار آن را یک کد دیجیتال منحصر به فرد اختصاص داده شده است.

برای حل این کار، روش جاوا اسکریپت را نمی توان برای استفاده از یک ردیف استفاده کرد. روش های معمول Parseint و Parsefloat برای استفاده های دیگر طراحی شده اند، اما شما می توانید یک الگوریتم برای تبدیل یکپارچه رشته در شماره، و نه لزوما برگشت پذیر ارائه دهید. به اندازه کافی، الگوریتم الگوریتم تبدیل در مجموعه های مختلف شخصیت های خطی تکرار نخواهد شد.

بهینه سازی ترافیک و تجزیه و تحلیل

هنگام تشکیل یک صفحه، توسعه دهنده از مقادیر قابل توجهی از اطلاعات استفاده می کند. یک بازدید کننده را برای ورود به اطلاعات ارائه دهید - راه خوب برای کاهش رتبه سایت به دلیل عملکرد ضعیف آن و ناامید کننده بازدید کننده.

اختصاص دادن یک مدیر رویداد به صورت یک تابع جاوا اسکریپت به اقدامات بازدید کننده برای بلوک های اطلاعاتی خاص، شما می توانید یک فیلتر را که به بازدید کننده اجازه می دهد به طور دقیق هدف، پیدا کنید، فرمول کنید اطلاعات لازم، راه حل دلخواه را دریافت کنید.

تبدیل اطلاعات کوچک در اینجا ممکن است بخشی از خط و بسیار کوچک در تعداد باشد. به عبارت دیگر، تبدیل ردیف جاوا اسکریپت به تعداد توسعه دهنده با توجه به الگوریتم آن انجام می شود. بازدید کننده اطلاعات قابل درک را مدیریت می کند، و سرور دارای حداقل مقدار داده است - تعداد.

پویایی بسیاری از اعداد در تمام بازدید کنندگان در زمینه اطلاعات دقیق شناخته شده اجازه می دهد تا یک تابع جاوا اسکریپت دیگر (نه دستیار)، توسط پاسخ سرور از طریق مکانیسم آژاکس، به سرعت در زمان واقعی به تمام بازدید کنندگان اطلاعات لازم را در همان زمان به دست آورد. بنابراین سیستم کار می کند.

این گزینه برای تبدیل ردیف جاوا اسکریپت بسیار در تقاضا در توسعه بازی های آنلاین، کنفرانس های تعاملی، انتقال است پیام های فوری و غیره.

ابزار استفاده از تحولات

جاوا اسکریپت و CSS در زمینه پردازش اطلاعات عددی به شما اجازه می دهد صفحه نمایش صفحه را بدون مشارکت سرور مدیریت کنید. قوانین CSS به صورت زیرزمینی ساخته شده اند. معمولا پارامتر شماره است که به دنبال چندین حرف (به عنوان مثال "PX"، "PT"، "EM"، ...) است. پارامتر یک سوپاپ در قانون است و قانون به سبک یک کلاس یا شناسه وارد می شود.

Recursion Javascript.Strete. ساختار ... به شماره مورد نظر می رود، تبدیل از رشته به شماره، آن را تغییر می دهد و به محل مورد نظر می نویسد. این قانون تغییر "ماشین" است. این ساده و راحت است، هیچ مشارکت سرور.

دو راه اصلی برای تبدیل رشته به جاوا اسکریپت وجود دارد. یک راه این است که آن را تجزیه و تحلیل کنید، و راه دیگری - تغییر نوع خود را به شماره. تمام ترفندها در پاسخ های دیگر (به عنوان مثال، یعنی به علاوه)، اجبار ضمنی را به عنوان یک رشته به تعداد نشان می دهد. شما همچنین می توانید همین کار را با عملکرد شماره انجام دهید.

نحوی

var parsed \u003d parseint ("97"، 10)؛

parseint و Parsefloat دو توابع مورد استفاده برای تجزیه ردیف به اعداد است. تجزیه و تحلیل نحو متوقف خواهد شد سکوت متوقف خواهد شد اگر آن را به یک نماد سقوط می کند که آن را تشخیص نمی دهد که آن را می توان برای تجزیه و تحلیل نحوی رشته ها، به عنوان مثال "92px" مفید است، اما آن را نیز تا حدودی خطرناک است، زیرا آن را به شما هیچ خطا با بد نیست ورود، به جای اینکه شما "NAN را بازگردانید اگر رشته با شماره شروع نمی شود. شکاف در ابتدای خط نادیده گرفته می شود. در اینجا نمونه ای از آنچه که او چیزی متفاوت انجام می دهد، آنچه شما نیاز دارید، و نشان نمی دهد که چیزی که رفت اشتباه:

var widgetssold \u003d parseint ("97،800"، 10)؛ // widgetssold در حال حاضر 97 است

تمرین خوب همیشه به عنوان یک استدلال دوم نشان می دهد. در مرورگرهای قدیمی، اگر رشته با 0 شروع شد، به عنوان اکتال تفسیر می شود، اگر آن را با ارزش Radix مشخص نشود، که بسیاری از مردم را به خاطر تعجب جذب کرد. رفتار برای راه اندازی هگزادسیمال شروع می شود اگر رشته با 0x شروع می شود اگر مقدار Radix مشخص نشده باشد. 0xff استاندارد در واقع با استفاده از Ecmascript 5 تغییر کرده است، بنابراین مرورگرهای مدرن زمانی که میزبان مشخص نشده است، هیچ هشت اکتال را اجرا نکنید، اگر مقدار Radix مشخص نشده باشد. Parseint را درک می کند Radics به پایه 36، و در این مورد هر دو حروف بزرگ و کوچک به عنوان معادل پردازش می شوند.

تغییر نوع رشته توسط شماره

تمام ترفندهای دیگر ذکر شده در بالا که از Parseint استفاده نمی کنند، به معنای اجباری ضمنی رشته به تعداد است. من ترجیح می دهم آن را به وضوح انجام دهم

var cast \u003d number ("97")؛

این متفاوت از روش های تجزیه و تحلیل است (اگر چه هنوز فضاهای را نادیده می گیرد). این دقیقا است: اگر کل خط را درک نمی کند از نانو، بنابراین شما نمی توانید از آن برای رشته های نوع 97PX استفاده کنید. از آنجا که شما نیاز به یک شماره اولیه دارید، نه عدد بسته بندی شماره، اطمینان حاصل کنید که قبل از عملکرد شماره، جدید را تنظیم نکنید.

بدیهی است، تبدیل به شماره به شما یک مقدار می دهد که می تواند شناور باشد، و نه یک عدد کامل، بنابراین اگر شما یک عدد صحیح را می خواهید، باید آن را تغییر دهید. راه های متعددی برای انجام این کار وجود دارد:

var گرد \u003d math.floor (شماره ("97.654"))؛ // دیگر گزینه ها هستند Math.Ceil، Math.Round var ثابت \u003d شماره ("97.654"). Tofixed (0)؛ // به جای کوتاهتر var bitwised \u003d شماره ("97.654") | 0؛ // برای تعداد زیادی استفاده نکنید

هر اپراتور تلخ (در اینجا من یک برکت هستم، اما شما همچنین می توانید یک نفی دو را ایجاد کنید، همانطور که در پاسخ قبلی یا تغییر بیت) مقدار را به یک عدد صحیح 32 بیتی تبدیل می کند، و اکثر آنها به یک عدد صحیح امضا شده تبدیل می شوند. توجه داشته باشید که این برای عدد صحیح بزرگ نیازی نیست. اگر یک عدد صحیح را می توان در 32 بیت نشان داد، تکمیل خواهد شد.

~~ "3000000000.654" \u003d\u003d\u003d -1294967296 // این همان شماره است ("3000000000.654") | 0 "3000000000.654") | 0 "3000000000.654" \u003e\u003e\u003e 0 \u003d\u003d\u003d 3000000000 // Shift Right Unsigned به شما یک بیت اضافی "300000000000.654" را می دهد \u003e\u003e 0 \u003d\u003d\u003d 3647256576 // اما هنوز با تعداد بیشتری ناکام نیست

به درستی با تعداد زیادی کار می کنید، باید از روش های گرد کردن استفاده کنید

Math.Floor ("3000000000.654") \u003d\u003d\u003d 3000000000 // این همانند Math.Floor (شماره ("3000000000.654") است)

به یاد داشته باشید که تمام این روش ها نماد نمایشی را درک می کنند، بنابراین 2E2 200 و نه نان نیست. علاوه بر این، تعداد "بی نهایت" را درک می کند، در حالی که روش های تجزیه و تحلیل نیست.

سفارشی

اشتباه است که هر یک از این روش ها دقیقا همان چیزی را می سازد. به عنوان مثال، من معمولا به یک خطا نیاز دارم که زمانی رخ می دهد که یک شکست تجزیه و تحلیل نحوی رخ می دهد، و من نیاز به پشتیبانی بی نهایت، غرفه داران و یا شکاف های پیشرو ندارم. بسته به استفاده شما، گاهی اوقات منطقی است که یک تابع تبدیل کاربر بنویسیم.

همیشه بررسی کنید که خروجی شماره یا یکی از روش های تجزیه و تحلیل، تعداد شما انتظار می رود. شما تقریبا مطمئنا می خواهید از Isnan استفاده کنید تا اطمینان حاصل کنید که این تعداد نان نیست (معمولا این تنها راهی است که می توان نتیجه بگیریم که تجزیه و تحلیل نحو شکست خورده است).

در جاوا اسکریپت 2 توابع داخلی ساخته شده برای تبدیل ردیف در اعداد وجود دارد: parsefloat () و parseint ().

parsefloat () استدلال را یک رشته می گیرد که باید به یک نوع عددی تبدیل شود و تعداد نوع شناور نوع را بازمی گرداند. این شماره باید در ابتدای خط باشد. اگر بعد از یک عدد در خط، هنوز برخی از شخصیت ها وجود دارد، پس آنها قطع می شوند. بخش کوچکی از این تعداد باید از طریق نقطه ثبت شود (کاما به عنوان یک جداساز درک نمی شود). در صورتی که Parsefloat () نمیتواند یک رشته را تبدیل کند، نان را باز می کند.

همچنین، تابع می تواند "NUM N ضرب شده توسط 10 به درجه X" را اداره کند، که در برنامه نویسی معمول است برای ضبط از طریق نامه E، به عنوان مثال: 0.5E6 یا 0.5E + 6. درجه ممکن است منفی باشد: 0.5E-6، که 0.5 * 10 ^ -6 یا 0.5 / 1000000 است.

Parsefloat ("" 3.78kg ") ///78 Parsefloat (" "KG33" ") // Nan Parsefloat (" "0004.111" ") // 4.111 Parsefloat (" 0x66 "") // 0 Parsefloat ("". 5 ") // 0.5 Parsefloat (" "- 5" ") // -0.5 parsefloat (" "0.5E6" ") // 500000 parsefloat (" 0.03E + 2 "") // 3 parsefloat ("" 3E- 4 "") // 0.0003 parsefloat ("" - 3E-4 "") // -0.0003

ویژگی Parseint (String [، Radix]) رشته را به عنوان اولین استدلال می گیرد، آن را تجزیه و تحلیل می کند و یک عدد صحیح (عدد صحیح را تایپ می کند). این تابع در حال تلاش برای تجزیه و تحلیل سیستم شماره است که در آن شماره در خط منبع ثبت می شود (به عنوان مثال، اعشاری، اکتال یا هگزادسیمال - اما نه تنها این). همچنین، سیستم شماره را می توان به صراحت مشخص کرد با عبور از پارامتر دوم Radix. پارامتر Radix می تواند هر تعداد از 2 تا 36 (در سیستم های بالای 10، حروف الفبا انگلیسی استفاده شود، از A به Z استفاده می شود).

اعداد نوع 1.5E6 تابع به عنوان parsefloat () اداره نمی شود.

لطفا مثالهای زیر را بخوانید تا در معرض مشکلات قرار ندهید، در عمل عملکرد Parseint () استفاده می شود.

Parseint ("" 25 "") // 25 Parseint ("" - 25 "") // -25 Parseint ("" 45.12 "") // 45 Parseint ("045" "، 10) // 45 Parseint (" 70 "، 8) // 56 (70 در سیستم هشتم آن 56 عدد در دهدهی) Parseint (" "070") // 56 (مهم !!! صفر اولین بار تابع را مجبور به تجزیه و تحلیل رشته به عنوان یک عدد هشتگانه) Parseint ("" 88 "، 8) // nan (در سیستم هشت هشت رقمی 8) parseint (" a1 ") // nan (مهم !!! عملکرد پیش فرض این شماره را به عنوان 16 ثانویه درک نمی کند، اگر در ابتدای ردیف 0x اضافه نکنید، Parseint ("A1" "، 16) // 161 (در اینجا به وضوح توسط سیستم شماره نشان داده شده است) Parseint (" 0xA1 ") //161 (فرمت شماره 16-Riche درست، شما نمیتوانید پارامتر دوم را مشخص کنید parseint ("" 099 ") // 0 (مهم !!! شماره به عنوان اکتال درک می شود، اما حاوی شخصیت های نامعتبر) Parsint (" "0.5E6") // 0 (مهم است! !! کار نمی کند به عنوان parsefloat) parsefloat ("" zz "، 36) // 1295 parseint (" "- ff" ") // nan parseint (" "- ff"، 16) // -255

اگر شما داده ها را پردازش می کنید زمینه متنکه وارد کاربر می شود، همیشه از ParseInt () همراه با پارامتر دوم Radix استفاده کنید، از کد شما از نتایج غیر منتظره محافظت می کند.

در جاوا اسکریپت 2 توابع داخلی ساخته شده برای تبدیل ردیف در اعداد وجود دارد: parsefloat () و parseint ().

parsefloat () استدلال را یک رشته می گیرد که باید به یک نوع عددی تبدیل شود و تعداد نوع شناور نوع را بازمی گرداند. این شماره باید در ابتدای خط باشد. اگر بعد از یک عدد در خط، هنوز برخی از شخصیت ها وجود دارد، پس آنها قطع می شوند. بخش کوچکی از این تعداد باید از طریق نقطه ثبت شود (کاما به عنوان یک جداساز درک نمی شود). در صورتی که Parsefloat () نمیتواند یک رشته را تبدیل کند، نان را باز می کند.

همچنین، تابع می تواند "NUM N ضرب شده توسط 10 به درجه X" را اداره کند، که در برنامه نویسی معمول است برای ضبط از طریق نامه E، به عنوان مثال: 0.5E6 یا 0.5E + 6. درجه ممکن است منفی باشد: 0.5E-6، که 0.5 * 10 ^ -6 یا 0.5 / 1000000 است.

Parsefloat ("" 3.78kg ") ///78 Parsefloat (" "KG33" ") // Nan Parsefloat (" "0004.111" ") // 4.111 Parsefloat (" 0x66 "") // 0 Parsefloat ("". 5 ") // 0.5 Parsefloat (" "- 5" ") // -0.5 parsefloat (" "0.5E6" ") // 500000 parsefloat (" 0.03E + 2 "") // 3 parsefloat ("" 3E- 4 "") // 0.0003 parsefloat ("" - 3E-4 "") // -0.0003

ویژگی Parseint (String [، Radix]) رشته را به عنوان اولین استدلال می گیرد، آن را تجزیه و تحلیل می کند و یک عدد صحیح (عدد صحیح را تایپ می کند). این تابع در حال تلاش برای تجزیه و تحلیل سیستم شماره است که در آن شماره در خط منبع ثبت می شود (به عنوان مثال، اعشاری، اکتال یا هگزادسیمال - اما نه تنها این). همچنین، سیستم شماره را می توان به صراحت مشخص کرد با عبور از پارامتر دوم Radix. پارامتر Radix می تواند هر تعداد از 2 تا 36 (در سیستم های بالای 10، حروف الفبا انگلیسی استفاده شود، از A به Z استفاده می شود).

اعداد نوع 1.5E6 تابع به عنوان parsefloat () اداره نمی شود.

لطفا مثالهای زیر را بخوانید تا در معرض مشکلات قرار ندهید، در عمل عملکرد Parseint () استفاده می شود.

Parseint ("" 25 "") // 25 Parseint ("" - 25 "") // -25 Parseint ("" 45.12 "") // 45 Parseint ("045" "، 10) // 45 Parseint (" 70 "، 8) // 56 (70 در سیستم هشتم آن 56 عدد در دهدهی) Parseint (" "070") // 56 (مهم !!! صفر اولین بار تابع را مجبور به تجزیه و تحلیل رشته به عنوان یک عدد هشتگانه) Parseint ("" 88 "، 8) // nan (در سیستم هشت هشت رقمی 8) parseint (" a1 ") // nan (مهم !!! عملکرد پیش فرض این شماره را به عنوان 16 ثانویه درک نمی کند، اگر در ابتدای ردیف 0x اضافه نکنید، Parseint ("A1" "، 16) // 161 (در اینجا به وضوح توسط سیستم شماره نشان داده شده است) Parseint (" 0xA1 ") //161 (فرمت شماره 16-Riche درست، شما نمیتوانید پارامتر دوم را مشخص کنید parseint ("" 099 ") // 0 (مهم !!! شماره به عنوان اکتال درک می شود، اما حاوی شخصیت های نامعتبر) Parsint (" "0.5E6") // 0 (مهم است! !! کار نمی کند به عنوان parsefloat) parsefloat ("" zz "، 36) // 1295 parseint (" "- ff" ") // nan parseint (" "- ff"، 16) // -255

اگر شما داده ها را از یک فیلد متنی که وارد کاربر می شود، مدیریت کنید، همیشه از Parseint () همراه با پارامتر دوم Radix استفاده کنید، از نتایج غیر منتظره محافظت می کند.