PHP में एक int के लिए अधिकतम मूल्य क्या है?


117

उन विशेष पुस्तकालयों को अनदेखा करना जो आपको बहुत बड़ी संख्या के साथ काम करने की अनुमति देते हैं, पीएचपी में आपके द्वारा संग्रहीत सबसे बड़ा इंट्यू क्या है?

जवाबों:


124

से पीएचपी मैनुअल :

एक पूर्णांक का आकार प्लेटफ़ॉर्म-निर्भर है, हालांकि लगभग दो बिलियन का अधिकतम मूल्य सामान्य मूल्य है (जो कि 32 बिट्स पर हस्ताक्षर किया गया है)। PHP अहस्ताक्षरित पूर्णांक का समर्थन नहीं करता है। पूर्णांक आकार को निरंतर PHP_INT_SIZE और PHP 4.4.0 और PHP 5.0.5 के बाद से निरंतर PHP_INT_MAX का उपयोग करके अधिकतम मूल्य निर्धारित किया जा सकता है।

64-बिट प्लेटफ़ॉर्म में आमतौर पर PHP 7 से पहले विंडोज पर छोड़कर 9E18 का अधिकतम मूल्य होता है, जहां यह हमेशा 32 बिट था।


15
खैर, amd64 linux, जो आजकल काफी आम है, इसकी 9223372036854775807 (2 ^ 63-1) पर
derobert

4
यह बहुत अधिक अंक है - पहला कारण यह है कि मैं समर्पित सर्वर के लिए खरीदारी करते समय इंटेल पर AMD का चयन करने के बारे में सोच सकता हूं। :)
करीम

39
@ karim79, मुझे लगता है कि यह आर्क 64-बिट होने के कारण है, यह एएमडी नहीं है। =]
स्ट्रैजर

7
AMD64 इन दिनों दोनों AMD और Intel द्वारा उपयोग किए जाने वाले 64-बिट आर्किटेक्चर का एक नाम है। इसके अन्य नामों में x64 और Intel 64 शामिल हैं। जैसा कि स्ट्रिंगर कहता है, इसका AMD से कोई लेना-देना नहीं है
thomasrutter

4
मेरी विंडोज़ XAMPP की गूंज 2147483647 है। मेरे पास
Vova Popov

86

32-बिट PHP के बनाता है:

  • पूर्णांक -2,147,483,648 से 2,147,483,647 (~ from 2 बिलियन) तक हो सकते हैं

64-बिट PHP का निर्माण:

  • पूर्णांक -9,223,372,036,854,775,808 से 9,223,372,036,854,775,807 (~ qu 9 क्विंटल) हो सकते हैं

संख्याएँ समावेशी हैं।

नोट: कुछ 64-बिट बिल्ड 32-बिट पूर्णांकों का उपयोग करते हैं, विशेष रूप से पुराने PHP के विंडोज बनाता है

इन श्रेणियों के बाहर के मूल्यों को फ्लोटिंग पॉइंट मानों द्वारा दर्शाया जाता है, क्योंकि इन सीमाओं के भीतर गैर-पूर्णांक मान हैं। दुभाषिया स्वचालित रूप से यह निर्धारित करेगा कि यह स्विच फ़्लोटिंग पॉइंट की आवश्यकता के आधार पर हो सकता है कि गणना के परिणाम मूल्य को पूर्णांक के रूप में प्रस्तुत नहीं किया जा सकता है।

PHP के पास "अहस्ताक्षरित" पूर्णांकों के लिए कोई समर्थन नहीं है, जैसे "पूर्णांकित" पूर्णांक की सीमा तक सभी पूर्णांकों के अधिकतम मूल्य को सीमित करना।


1
दिलचस्प बात यह है कि 32-बिट बिल्ड फ़्लोट्स में पूर्णांक सटीकता सटीकता को बनाए रख सकते हैं जो कि किलों की तुलना में उच्च मूल्यों के लिए हो सकते हैं - फ़्लोट्स को 2 ^ 53 + 1 तक पूर्णांक मानों के लिए इस्तेमाल किया जा सकता है, जो कि 2 ^ 31 - 1 ints से काफी अधिक है। 64-बिट बिल्ड में यह उल्टा होता है क्योंकि फ़्लोट्स एक ही सटीक होते हैं लेकिन
इन्टस

21

PHP ints का आकार प्लेटफॉर्म पर निर्भर है :

एक पूर्णांक का आकार प्लेटफ़ॉर्म-निर्भर है, हालांकि लगभग दो बिलियन का अधिकतम मूल्य सामान्य मूल्य है (जो कि 32 बिट्स पर हस्ताक्षर किया गया है)। PHP अहस्ताक्षरित पूर्णांक का समर्थन नहीं करता है। पूर्णांक आकार को निरंतर PHP_INT_SIZE और PHP 4.4.0 और PHP 5.0.5 के बाद से निरंतर PHP_INT_MAX का उपयोग करके अधिकतम मूल्य निर्धारित किया जा सकता है।

PHP 6 "लॉन्ग" (64 बिट इन्ट) जोड़ता है।


2
मुझे ये डाउनवोट नहीं मिलते हैं .. यह पूरी तरह से एक अच्छा उत्तर है, यहां तक ​​कि इसे ठीक करने के लिए कुछ अतिरिक्त जानकारी। +1 में भी।
निकफ

3
यह उत्तर मूल रूप से " निर्भर में मंच " (आश्रित नहीं) पढ़ा । यह (अभी भी) दावा करता है कि PHP 6 से पहले 64-बिट ints मौजूद नहीं था। यह गलत है।
थोमसट्रेटर

PHP 6 कभी नहीं हुआ, लेकिन यह अप्रासंगिक है।
बैडहॉर्सी

16

(थोड़ी देर, लेकिन उपयोगी हो सकता है)

केवल PHP_INT_MAX और PHP_INT_SIZE पर भरोसा करें , यह मान आपके आर्च (32/64 बिट्स) या आपके OS पर भिन्न होता है ...

कोई अन्य "अनुमान" या "संकेत" गलत हो सकता है।


6

आह मैंने पाया: 2 32 - 1 (2147483647)

http://au2.php.net/int

पूर्णांक अतिप्रवाह

यदि PHP पूर्णांक प्रकार की सीमाओं से परे एक संख्या का सामना करता है, तो इसे एक फ्लोट के रूप में व्याख्या किया जाएगा। इसके अलावा, एक ऑपरेशन जिसके परिणामस्वरूप पूर्णांक प्रकार की सीमा से परे एक संख्या होती है, इसके बजाय एक फ्लोट वापस आ जाएगी।

<?php
$large_number =  2147483647;
var_dump($large_number);
// output: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// output: float(2147483648)

8
यह वह है जो 32-बिट प्लेटफॉर्म पर होगा। यह भी विचार करें कि कई लोग 64-बिट प्लेटफॉर्म पर सर्वर चलाते हैं।
थोमसट्रेटर

2

यह आपके ओएस पर निर्भर करता है, लेकिन 2147483647 मैनुअल के अनुसार सामान्य मूल्य है ।


6
विशेष रूप से, यह इस बात पर निर्भर करता है कि आप 32-बिट प्लेटफॉर्म पर चल रहे हैं या 64-बिट पर। 32-बिट दुनिया में केवल "सामान्य" है जहां ज्यादातर लोग 32-बिट सर्वर चलाते हैं। तेजी से यह मामला नहीं बन रहा है।
थोमसट्रेटर

0

यद्यपि PHP_INT_*स्थिरांक बहुत लंबे समय तक मौजूद होते हैं, वही MIN / MAX मान नकारात्मक रूप से पहुंचने तक बाएं स्थानांतरण द्वारा प्रोग्रामेटिक रूप से पाया जा सकता है:

$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;

0

यह उस सर्वर के आर्किटेक्चर के अधीन है जिस पर पीएचपी चलता है। 64-बिट के लिए,

print PHP_INT_MIN . ", ” . PHP_INT_MAX; पैदावार -9223372036854775808, 9223372036854775807

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.