2011-12-27 11 views
11
में लंबे पूर्णांक का उपयोग

मैं इस बाहर कोशिश कर रहा हूँ, लेकिन बड़े मूल्यपीएचपी

$var = rand(100000000000000,999999999999999); 
echo $var; // prints a 9 digit value(largest possible) 

स्टोर करने में असमर्थ हूँ कैसे एक वांछित मूल्य प्राप्त करने के?

उत्तर

4

यदि आपको बहुत बड़ी संख्या में काम करने की आवश्यकता है तो मुझे बीसी गणित के साथ सफलता मिली है।

http://php.net/manual/en/book.bc.php

15

manual से:: यहाँ सब कुछ के लिए एक लिंक आप को पता है की जरूरत है

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

...

पीएचपी पूर्णांक प्रकार की सीमा से परे एक नंबर का सामना करना पड़ता है, यह बजाय एक नाव के रूप में व्याख्या की जाएगी। साथ ही, एक ऑपरेशन जो पूर्णांक प्रकार की सीमाओं से परे एक संख्या में परिणामस्वरूप इसके बजाय एक फ्लोट लौटाएगा।

BC Math और GMP (केवल?) जिस तरह से इस सीमा में हेरफेर कर रहे हैं।

1

यदि आप संख्या उत्पन्न करना चाहते हैं और देशी प्रकार के रूप में हेरफेर करना चाहते हैं, तो आप अधिकतर PHP इंस्टॉलेशन (या तो आपके पास 32 या 64 बिट int एस और कुछ और नहीं) के साथ नहीं हो सकते हैं, क्योंकि अन्य उत्तरों पहले से ही बताए गए हैं। हालांकि, अगर आप सिर्फ एक संख्या पैदा करने और एक संभव चाल के आसपास इसे पारित करना चाहते हैं तो बस तार जोड़ लिए है:

$var = rand(0,PHP_INT_MAX).str_pad(rand(0, 999999999), 9, 0, STR_PAD_LEFT); 
echo $var; 

जिसमें पीएचपी एक 32 बिट पूर्णांक का उपयोग करता है एक मंच पर, यह आप एक के पास पाने के लिए अनुमति देता है यादृच्छिक पूर्णांक (एक स्ट्रिंग के रूप में) जो कि 32 बिट्स (> 10 दशमलव स्थान) से बड़ा है। बेशक, इस निर्माण में एक पूर्वाग्रह है जिसका अर्थ है कि आप सभी संभावनाओं को एक ही संभावना के साथ कवर नहीं करेंगे। rand() कॉल की सीमाएं सामान्य दशमलव नियमों का पालन करती हैं, इसलिए आप जो संख्या चाहते हैं उसकी ऊपरी सीमा को समायोजित करना आसान है।

यदि आप जो भी कर रहे हैं वह इस मूल्य को संग्रहीत/प्रेषण/दिखा रहा है, तो स्ट्रिंग ठीक होगी। समानता और परीक्षण से अधिक/कम भी काम करेगा। बस इसके साथ कोई गणित मत करो।