এর উত্তর "আশ্চর্যজনকভাবে" সহজ:
প্রথম - আপনার বেশিরভাগ হিসাবে জানা থাকতে পারে - একটি 32-বিট পূর্ণসংখ্যা −2,147,483,648 থেকে শুরু করে 2,147,483,647 । সুতরাং, পিএইচপি কোনও ফলাফল পেলে কি হয়, এটি এর চেয়ে আরও বড়?
সাধারণত, কেউ তাত্ক্ষণিক "ওভারফ্লো" আশা করতে পারে, যার ফলে 2,147,483,647 + 1 −2,147,483,648 এ পরিণত হয় । যাই হোক, এটা ব্যপার না. যদি পিএইচপি কোনও বৃহত সংখ্যার মুখোমুখি হয় তবে এটি INT এর পরিবর্তে ফ্ল্যাট ফিরিয়ে দেয়।
পিএইচপি যদি পূর্ণসংখ্যার প্রান্তের সীমা ছাড়িয়ে কোনও সংখ্যার মুখোমুখি হয়, তবে এটি পরিবর্তে একটি ফ্লোট হিসাবে ব্যাখ্যা করা হবে। এছাড়াও, কোনও ক্রিয়াকলাপের ফলে সংখ্যার পূর্ণসংখ্যার প্রান্তের সীমানা ছাড়িয়ে যাওয়ার ফলাফল পরিবর্তে একটি ফ্লোট ফিরে আসবে।
http://php.net/manual/en/language.types.integer.php
এটি বলেছে এবং পিএইচপি ফ্লাট বাস্তবায়ন আইইইই 754 ডাবল স্পষ্টতা ফর্ম্যাট অনুসরণ করছে, এর অর্থ এই যে পিএইচপি নির্ভুলতা ছাড়াই 52 বিট পর্যন্ত সংখ্যার সাথে ডিল করতে সক্ষম হয়। (একটি 32-বিট সিস্টেমে)
সুতরাং, সেই বিন্দুতে, যেখানে আপনার যোগফল 9,007,199,254,740,992 (যা 2 ^ 53 ) হিট করেছে পিএইচপি গণিতে ফিরিয়ে দেওয়া ফ্লোট মানটি আর যথেষ্ট পরিমাণে সুনির্দিষ্ট হবে না।
E:\PHP>php -r "$x=bindec(\"100000000000000000000000000000000000000000000000000000\"); echo number_format($x,0);"
9.007.199.254.740.992
E:\PHP>php -r "$x=bindec(\"100000000000000000000000000000000000000000000000000001\"); echo number_format($x,0);"
9.007.199.254.740.992
E:\PHP>php -r "$x=bindec(\"100000000000000000000000000000000000000000000000000010\"); echo number_format($x,0);"
9.007.199.254.740.994
এই উদাহরণটি পয়েন্টটি দেখায়, যেখানে পিএইচপি নির্ভুলতা হারাচ্ছে। প্রথম, সর্বশেষ হিট বিট বাদ দেওয়া হবে, যার ফলে প্রথম 2 টি এক্সপ্রেশন একটি সমান সংখ্যার ফলস্বরূপ হয় - যা তারা নয় n't
এখন থেকে, ডিফল্ট ডেটা-টাইপের সাথে কাজ করার সময় পুরো গণিতটি ভুল হয়ে যাবে।
Other পাইথন বা পার্লের মতো অন্যান্য ব্যাখ্যাযুক্ত ভাষার ক্ষেত্রেও কি একই সমস্যা?
আমি তাই মনে করি না. আমি মনে করি এটি এমন একটি ভাষার সমস্যা যার কোনও ধরণের সুরক্ষা নেই। উপরে উল্লিখিত ইন্টিজার ওভারফ্লো যখন স্থির ডেটা ব্যবহার করে এমন প্রতিটি ভাষায় ঘটবে, তবে টাইপ-সুরক্ষা ছাড়াই থাকা ভাষাগুলি অন্য ডেটাটাইপগুলির সাথে এটি ধরার চেষ্টা করতে পারে। যাইহোক, একবার তাদের "প্রাকৃতিক" (সিস্টেম-প্রদত্ত) বর্ডারে আঘাত করলে তারা কিছু দিতে পারে তবে সঠিক ফলাফল।
যাইহোক, প্রতিটি ভাষার এই ধরণের দৃশ্যের জন্য আলাদা আলাদা থ্রেডিং থাকতে পারে।