ParseInt को कॉल करते समय हमें मूलांक पैरामीटर का उपयोग करने की आवश्यकता क्यों है?


जवाबों:


103

आप हमेशा पूर्णांक को आधार संख्या 10 में पार्स नहीं करना चाहते हैं, इसलिए मूलांक की आपूर्ति आपको अन्य संख्या प्रणालियों को निर्दिष्ट करने की अनुमति देती है।

मूलांक एक अंक के लिए मानों की संख्या है। Hexidecimal 16 होगा। Octal 8 होगा, बाइनरी 2 होगा, और इसी तरह ...

में parseInt()समारोह, वहाँ कई चीजें यह आपूर्ति के बिना आप मूलांक में संकेत करने के लिए कर सकते हैं। यदि उपयोगकर्ता नियम में से एक से मेल खाता है, तो यह आपके खिलाफ भी काम कर सकता है, लेकिन स्पष्ट रूप से इसका मतलब नहीं है। उदाहरण के लिए:

// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5.
// These days, browsers will treat '0101' as decimal.
var result = parseInt('0101');

// Numbers that start with 0x use a radix of 16 (hexidecimal)
var result = parseInt('0x0101');

// Numbers starting with anything else assumes a radix of 10
var result = parseInt('101');

// Or you can specify the radix, in this case 2 (binary)
var result = parseInt('0101', 2);

2
तो parseInt ('0101') 101 या 65 देता है?
विवेचक

7
@Vivekh - जब मैंने मूल रूप से उत्तर पोस्ट किया था तो यह 2011 को वापस कर दिया गया था। Google Chrome में एक त्वरित जांच से लगता है कि वे थोड़ा बदल गए हैं। parseInt('0101')अब लौटता है 101। अलग-अलग ब्राउज़रों का अलग-अलग व्यवहार हो सकता है। विश्वसनीय परिणामों के लिए हमेशा मूलांक शामिल करें।
जस्टिन निस्नेर


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

1
मैंने हमेशा parseInt(x, 0)किसी कारण से उपयोग किया है जिसे मैं अभी याद नहीं कर सकता parseInt(x, 10)हूँ .. क्या यह अब मैं सोच रहा हूँ के बराबर है ...
OZZIE

35

क्योंकि अगर आपके पास एक स्ट्रिंग संख्या है 0700और चाहते हैं कि आउटपुट पूर्णांक हो, 700तो आपको सूचित करना होगा parseInt()कि यह ऑक्टल के बजाय एक दशमलव संख्या है।

console.log(parseInt("0700"));
// 448

// I really wanted decimal (base 10)
console.log(parseInt("0700", 10));
// 700

// What is this? Binary, Decimal, Octal?
console.log(parseInt("0110"));
// 72

// as binary
console.log(parseInt("0110", 2));
// 6
नोट मैंने केवल आपके आधे प्रश्न का उत्तर दिया है। एक मूलांक वास्तव में क्या है की अच्छी परिभाषा के लिए दूसरों को देखें।


1
इसके अलावा, द्विआधारी parseInt ('10101', 2)
जो

1
console.log (parseInt ( "0700")); लौट रहा है // 700 नहीं 448.
नरेन

@Naren 8 साल पहले यह जो भी ब्राउज़र कंसोल में मैं इसे चलाता था उसमें 448 था। आधुनिक क्रोम और नोड में, मुझे भी आज 700 मिला, लेकिन शायद यह उस समय अपरिभाषित व्यवहार था।
माइकल बर्कोव्स्की

@MichaelBerkowski मैं उस अंतर को हाल ही में 0o0
नोटिस कर रहा था-

7

मूलांक एक अंक प्रणाली का आधार है। अंकीय प्रणालियों की एक अनंत संख्या है, लेकिन जिन लोगों से अधिकांश लोग परिचित हैं, वे आधार 10 (दशमलव) और आधार 2 (बाइनरी) हैं।

विभिन्न आधारों में संख्यात्मक मूल्यों की अलग-अलग व्याख्या की जा सकती है। उदाहरण के लिए, बाइनरी में संख्या 10 को दशमलव में 2 के रूप में दर्शाया जा सकता है।

के मामले में parseInt(), मूलांक आपको आधार का उपयोग करने के लिए निर्दिष्ट करने की अनुमति देता है। डिफ़ॉल्ट रूप से, 10 का मूलांक प्रयोग किया जाता है।

हालांकि, मूलांक को हमेशा निर्दिष्ट किया जाना चाहिए, यहां तक ​​कि आधार का उपयोग करते समय 10. के मामले पर विचार करें

parseInt("010") // रिटर्न 8

पहली नज़र में, आप कथन की वापसी की उम्मीद कर सकते हैं। 10 मूलांक का स्पष्ट उपयोग भ्रम से बचने में मदद करेगा:

parseInt("010", 10) // रिटर्न: 10


4

मूलांक संख्या प्रणाली का आधार नंबर है: http://en.wikipedia.org/wiki/Radix

आम तौर पर, आपको केवल मूलांक निर्दिष्ट करने की आवश्यकता है यदि आप इसे 10 से अलग करना चाहते हैं। विशेष रूप से ( http://www.w3schools.com/jsref/jsref_parseInt.asp से ):

यदि मूलांक पैरामीटर को छोड़ दिया जाता है, तो जावास्क्रिप्ट निम्नलिखित मानता है:

यदि स्ट्रिंग "0x" से शुरू होती है, तो मूलांक 16 (हेक्साडेसिमल) है यदि स्ट्रिंग "0" से शुरू होती है, तो मूलांक 8 (अष्टक) है। यह सुविधा पदावनत है यदि स्ट्रिंग किसी अन्य मान से शुरू होती है, तो मूलांक 10 है (दशमलव)


2

बस कुछ अतिरिक्त जानकारी जोड़ना जो स्पष्ट रूप से प्रश्न का उत्तर देता है:

यदि मूलांक अपरिभाषित या 0 (या अनुपस्थित) है, तो जावास्क्रिप्ट निम्नलिखित मानता है:

  • [...]
  • यदि इनपुट स्ट्रिंग "0" से शुरू होती है, तो मूलांक आठ (अष्टक) या 10 (दशमलव) है। वास्तव में जो मूलांक चुना गया है वह कार्यान्वयन-निर्भर है। ECMAScript 5 निर्दिष्ट करता है कि 10 (दशमलव) का उपयोग किया जाता है, लेकिन सभी ब्राउज़र अभी तक इसका समर्थन नहीं करते हैं। इस कारण हमेशा parIInt का उपयोग करते समय एक मूलांक निर्दिष्ट करें।
  • [...]

स्रोत: MDN parseInt ()


2

यह सिर्फ मेरी राय है लेकिन विचार है कि "हमें मूलांक का उपयोग करने की आवश्यकता है" जल्दी से पुराना हो जाता है। समस्या वास्तव में कुछ समय पहले वास्तविक थी क्योंकि आईटी दुनिया के बाहर के लोग आमतौर पर दशमलव के अलावा संख्या नोटेशन का उपयोग नहीं करते हैं और अक्सर दशमलव संख्या "010" जैसे शून्य-गद्देदार प्रदान करते हैं। लेकिन चूंकि JSM में ECMAScript 6 अष्टक संख्याएँ "0o" द्वारा उपसर्गित की गई हैं, न कि केवल "0", जैसा कि ECMAScript 5 और 3 में था। इसलिए यदि आप IE परिवार को लक्षित नहीं करते हैं (जो अब दुर्लभ स्थिति नहीं है) तो आप यूनिक्स को छोड़ सकते हैं सुरक्षित रूप से।


1

मूलांक पैरामीटर का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि किस अंक प्रणाली का उपयोग किया जाना है, उदाहरण के लिए, 16 का एक मूलांक (हेक्साडेसिमल) इंगित करता है कि स्ट्रिंग में संख्या एक हेक्साडेसिमल संख्या से दशमलव संख्या तक पार्स होनी चाहिए।

यदि मूलांक पैरामीटर को छोड़ दिया जाता है, तो जावास्क्रिप्ट निम्नलिखित मानता है:

यदि स्ट्रिंग "0x" से शुरू होती है, तो मूलांक 16 (हेक्साडेसिमल) है

यदि स्ट्रिंग "0" से शुरू होती है, तो मूलांक 8 (अष्टक) है। यह सुविधा पदावनत है

यदि स्ट्रिंग किसी अन्य मान से शुरू होती है, तो मूलांक 10 (दशमलव) है

स्रोत W3Schools


1

PaseInt () में मूलांक क्या है ?

parseInt()समारोह एक स्ट्रिंग को पार्स करता है और एक पूर्णांक देता है। यह मूलांक के लिए एक दूसरा तर्क लेता है , जो स्ट्रिंग में संख्या के आधार को निर्दिष्ट करता हैमूलांक के बीच एक पूर्णांक हो सकता है 2और 36

फ़ंक्शन कॉल की तरह दिखता है (सिंटैक्स):

parseInt(string, radix);

मूलांक की अवधारणा को स्पष्ट करने के लिए कुछ उदाहरण

उदाहरण 1:

var a = parseInt("11", 2);

मूलांक चर का कहना है कि "11" में है बाइनरी सिस्टम, या आधार 2 । इसलिए, यह उदाहरण स्ट्रिंग "11" को एक पूर्णांक 3 में परिवर्तित करता है।

उदाहरण 2:

var a = parseInt("10011", 16);

यहां मूलांक बताता है parseInt()कि 10011एक हेक्साडेसिमल संख्या है और इसलिए पूर्णांक में, यह परिवर्तित हो जाता है65553

मूल रूप से, लंबी कहानी संक्षेप में, मूलांक तर्क बताता है parseInt()कि 1 पैरामीटर के रूप में पारित स्ट्रिंग एक विशेष प्रणाली (बाइनरी, हेक्साडेसिमल आदि) की है और इसे अंतिम उत्पाद के रूप में पूर्णांक में परिवर्तित करने की आवश्यकता है।

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