این دستور perlnumber است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
perlnumber - معناشناسی اعداد و عملیات عددی در پرل
خلاصه
$n = 1234; # عدد صحیح اعشاری
$n = 0b1110011; # عدد صحیح باینری
$n = 01234; # عدد صحیح هشتگانه
$n = 0x1234; # عدد صحیح هگزادسیمال
$n = 12.34e-56; # نماد نمایی
$n = "-12.34e56"; # عدد به عنوان یک رشته مشخص شده است
$n = "1234"; # عدد به عنوان یک رشته مشخص شده است
شرح
این سند نحوه مدیریت داخلی Perl مقادیر عددی را توضیح می دهد.
در اینجا امکانات بارگذاری بیش از حد اپراتور Perl کاملا نادیده گرفته می شود. بارگذاری بیش از حد اپراتور
اجازه می دهد تا رفتارهای تعریف شده توسط کاربر برای اعداد، مانند عملیات بیش از حد خودسرانه بزرگ
اعداد صحیح، اعداد ممیز شناور با دقت دلخواه، عملیات بیش از "عجیب"
اعدادی مانند محاسبات مدولار یا محاسبات p-adic و غیره. برای مشاهده اضافه بار
جزئیات.
ذخیره سازی تعداد
Perl می تواند اعداد را به 3 روش مختلف نمایش دهد: به عنوان اعداد صحیح بومی، به عنوان بومی
اعداد ممیز شناور، و به عنوان رشته های اعشاری. رشته های اعشاری ممکن است دارای نمایی باشند
بخش نمادگذاری، مانند "12.34e-56". بومی در اینجا به معنای "فرمتی است که توسط کامپایلر C پشتیبانی می شود
که برای ساخت پرل استفاده می شد».
هنگامی که ما در مورد اعداد صحیح بومی صحبت می کنیم، اصطلاح "بومی" به اندازه آن معنی ندارد
زمانی که اعداد ممیز شناور بومی دخیل هستند این کار را انجام می دهد. تنها مفهوم این اصطلاح
"بومی" در اعداد صحیح این است که محدودیت های حداکثر و حداقل درست است
کمیت های انتگرال نزدیک به توان های 2 هستند. با این حال، شناورهای "بومی" بیشترین مقدار را دارند.
محدودیت اساسی: آنها ممکن است تنها اعدادی را نشان دهند که دارای یک نسبت نسبی هستند
نمایش "کوتاه" زمانی که به کسری باینری تبدیل می شود. به عنوان مثال، 0.9 نمی تواند باشد
با یک شناور بومی نشان داده می شود، زیرا کسر باینری برای 0.9 بی نهایت است:
باینری 0.1110011001100...
با دنباله 1100 که بارها و بارها تکرار می شود. علاوه بر این محدودیت،
توان عدد باینری نیز زمانی محدود می شود که به صورت شناور نمایش داده شود
شماره نقطه در سخت افزار معمولی، مقادیر ممیز شناور می توانند اعداد تا 53 را ذخیره کنند
ارقام باینری و با توان های باینری بین 1024- و 1024. به صورت اعشاری
این نمایش نزدیک به 16 رقم اعشاری و توان اعشاری در محدوده است
-304..304. نتیجه همه اینها این است که پرل نمی تواند عددی شبیه به آن را ذخیره کند
12345678901234567 به عنوان یک عدد ممیز شناور در چنین معماری هایی بدون از دست دادن
اطلاعات.
به طور مشابه، رشته های اعشاری می توانند تنها اعدادی را نشان دهند که دارای اعشار محدود هستند
گسترش از آنجایی که رشته ها هستند و بنابراین دارای طول دلخواه هستند، هیچ محدودیت عملی برای آن وجود ندارد
توان یا تعداد ارقام اعشاری برای این اعداد. (اما این را بدانیم که ما هستیم
بحث در مورد قوانین فقط ذخیره سازی از این اعداد این واقعیت که شما می توانید ذخیره کنید
چنین اعداد "بزرگ" به این معنی نیست که عملیات بیش از این اعداد از همه استفاده خواهد کرد
ارقام قابل توجه برای جزئیات بیشتر به "عملگرهای عددی و تبدیل های عددی" مراجعه کنید.)
در واقع اعداد ذخیره شده در قالب اعداد صحیح بومی ممکن است در قالب علامت دار ذخیره شوند
شکل بومی یا به شکل بومی بدون علامت. بنابراین محدودیت برای اعداد پرل به عنوان ذخیره می شود
اعداد صحیح بومی معمولاً -2**31..2**32-1 هستند، با تغییرات مناسب در
مورد اعداد صحیح 64 بیتی. باز هم، این بدان معنا نیست که Perl میتواند عملیات را فقط به پایان برساند
اعداد صحیح در این محدوده: امکان ذخیره تعداد بیشتری اعداد صحیح در ممیز شناور وجود دارد
فرمت.
به طور خلاصه، مقادیر عددی پرل فقط می توانند اعدادی را ذخیره کنند که دارای اعشار محدود هستند
بسط یا یک بسط دودویی "کوتاه".
عددی اپراتور و عددی تبدیل
همانطور که قبلا ذکر شد، Perl می تواند یک عدد را در هر سه فرمت ذخیره کند، اما اکثر آنها
اپراتورها معمولاً فقط یکی از آن فرمت ها را درک می کنند. وقتی یک مقدار عددی ارسال می شود
به عنوان یک آرگومان برای چنین اپراتور، آن را به فرمت درک شده توسط
اپراتور.
شش چنین تبدیل ممکن است:
عدد صحیح بومی --> نقطه شناور بومی (*)
عدد صحیح بومی --> رشته اعشاری
Native floating_point --> Native integer (*)
floating_point بومی --> رشته اعشاری (*)
رشته اعشاری --> عدد صحیح بومی
رشته اعشاری --> نقطه شناور بومی (*)
این تبدیل ها توسط قوانین کلی زیر کنترل می شوند:
· اگر بتوان شماره منبع را در فرم هدف نشان داد، آن نمایش است
استفاده شده.
· اگر شماره منبع خارج از حدود قابل نمایش در فرم هدف باشد، الف
نمایش نزدیکترین حد استفاده می شود. (زیان of اطلاعات)
· اگر شماره منبع بین دو عدد قابل نمایش در فرم هدف باشد، الف
نمایش یکی از این اعداد استفاده می شود. (زیان of اطلاعات)
· در تبدیل "نقطه شناور بومی --> عدد صحیح بومی" بزرگی نتیجه
کمتر یا مساوی با بزرگی منبع است. ("گرد کردن به صفر".)
· اگر تبدیل "رشته اعشاری --> عدد صحیح بومی" را نمی توان بدون از دست دادن انجام داد
اطلاعات، نتیجه با دنباله تبدیل "رشته_اعشاری --> سازگار است
native_floating_point --> native_integer". به ویژه، گرد کردن به شدت مغرضانه است
به 0، اگرچه عددی مانند "0.99999999999999999999" شانس گرد شدن به
1.
محدودیت: تبدیل هایی که با "(*)" در بالا مشخص شده اند شامل مراحل انجام شده توسط C هستند
کامپایلر به ویژه، اشکالات/ویژگی های کامپایلر مورد استفاده ممکن است منجر به شکستن برخی از آنها شود
از قوانین فوق
طعم of پرل عددی عملیات
عملیات پرل که یک آرگومان عددی را می گیرد، آن آرگومان را در یکی از چهار مورد مختلف بررسی می کند
راهها: ممکن است آن را به یکی از قالبهای عدد صحیح/ شناور/ رشته تحمیل کنند، یا ممکن است رفتار کنند.
بسته به فرمت عملوند متفاوت است. وادار کردن یک مقدار عددی به a
فرمت خاص عدد ذخیره شده در مقدار را تغییر نمی دهد.
تمام عملگرهایی که به آرگومان در قالب عدد صحیح نیاز دارند، آرگومان را به صورت in در نظر می گیرند
محاسبات مدولار، به عنوان مثال، "mod 2**32" در یک معماری 32 بیتی. "sprintf "%u"، -1"
بنابراین همان نتیجه "sprintf "%u"، ~0 را ارائه می دهد.
عملگرهای حسابی
عملگرهای باینری "+" "-" "*" "/" "%" "==" "!=" ">" "<" ">=" "<=" و unary
عملگرهای "-" "abs" و "--" تلاش خواهند کرد تا آرگومان ها را به اعداد صحیح تبدیل کنند. اگر هر دو
تبدیل بدون از دست دادن دقت امکان پذیر است و عملیات می تواند انجام شود
بدون از دست دادن دقت، از نتیجه عدد صحیح استفاده می شود. در غیر این صورت استدلال هستند
به فرمت ممیز شناور تبدیل می شود و از نتیجه ممیز شناور استفاده می شود. ذخیره سازی
از تبدیل (همانطور که در بالا توضیح داده شد) به این معنی است که تبدیل عدد صحیح انجام نمی شود
دور کردن قطعات کسری روی اعداد ممیز شناور.
++ "++" مانند سایر عملگرهای بالا عمل می کند، با این تفاوت که اگر رشته ای مطابق با آن باشد
قالب "/^[a-zA-Z]*[0-9]*\z/" افزایش رشته توصیف شده در perlop استفاده می شود.
عملگرهای حسابی در طول "استفاده از عدد صحیح"
در محدوده هایی که "استفاده از عدد صحیح" در حال اجرا است، تقریباً تمام اپراتورهای ذکر شده در بالا این کار را انجام خواهند داد
آرگومان(های) خود را به فرمت عدد صحیح وادار کرده و یک نتیجه عدد صحیح را برمی گرداند. در
استثناها، "abs"، "++" و "--"، رفتار خود را با "استفاده از عدد صحیح" تغییر نمی دهند.
سایر عملگرهای ریاضی
عملگرهایی مانند "**"، "sin" و "exp" آرگومان ها را به قالب ممیز شناور وادار می کنند.
عملگرهای بیتی
آرگومان ها اگر رشته ها نباشند به فرمت عدد صحیح وارد می شوند.
عملگرهای بیتی در طول "استفاده از عدد صحیح"
آرگومان ها را به فرمت عدد صحیح وادار می کند. همچنین عملیات شیفت به صورت داخلی از signed استفاده می کند
اعداد صحیح به جای پیش فرض بدون علامت.
اپراتورهایی که انتظار یک عدد صحیح را دارند
آرگومان را به فرمت عدد صحیح وادار کنید. این مورد برای سوم و
به عنوان مثال، آرگومان های چهارم "sysread".
اپراتورهایی که انتظار یک رشته را دارند
آرگومان را وارد قالب رشته کنید. به عنوان مثال، این برای "printf" قابل اجرا است
"%s"، $value".
اگرچه اجبار یک آرگومان به یک فرم خاص، عدد ذخیره شده را تغییر نمی دهد، Perl
نتیجه چنین تبدیل هایی را به خاطر می آورد. به طور خاص، هر چند اولین چنین تبدیل
ممکن است زمانبر باشد، عملیاتهای مکرر نیازی به انجام مجدد تبدیل ندارند.
از perlnumber به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید