2012-10-10 4 views
10

संभव डुप्लिकेट:
Behavior difference between parseInt() and parseFloat()अंतर)

var box = $('.box'), 
fontSize = parseInt(box.css('font-size'), 10) + 5; 

$('button').on('click', function() { 
    box.animate({fontSize: fontSize}); 
}); 

// ..

var box = $('.box'), 
fontSize = parseFloat(box.css('font-size'), 10) + 5; 

    $('button').on('click', function() { 
    box.animate({fontSize: fontSize}) 
}); 

क्या बीच का अंतर ..

**fontSize = parseInt(box.css('font-size'), 10);** 

**fontSize = parseFloat(box.css('font-size'), 10);** 

और क्यों 10 को संदर्भ के रूप में रखा जाना चाहिए .. कृपया मदद करें?

+1

इस सवाल पर एक नज़र डालें http://stackoverflow.com/questions/9528433/behavior-difference-between-parseint-and- parsefloat – Amitd

+1

यह भी https: //developer.mozilla।संगठन/एन-यूएस/डॉक्स/जावास्क्रिप्ट/गाइड/फंक्शंस? redirectlocale = en-US और redirectslug = Core_JavaScript_1.5_Guide% 2FFunctions # parseInt_and_parseFloat_Functions – Amitd

उत्तर

4

सबसे पहले केवल parseInt दूसरे तर्क को स्वीकार करता है। इसे रेडिक्स कहा जाता है। यह उपयोग करने के लिए संख्या प्रणाली का प्रतिनिधित्व करता है। उदाहरण में आप संख्या को बाइनरी या हेक्साडेसिमल कोड में परिवर्तित कर सकते हैं।

parseFloat केवल एक तर्क स्वीकार करता है।

+0

मदद के लिए धन्यवाद –

32

जावास्क्रिप्ट गैर-संख्या प्राइमेटिव को संख्याओं में परिवर्तित करने के लिए दो विधियां प्रदान करता है: parseInt() और parseFloat()। जैसा कि आपने अनुमान लगाया होगा, पूर्व एक मान को एक पूर्णांक में परिवर्तित करता है जबकि बाद में एक मान को फ़्लोटिंग-पॉइंट नंबर में परिवर्तित करता है।

कोई भी संख्या शाब्दिक एक स्ट्रिंग में निहित भी, सही ढंग से बदल जाती है तो स्ट्रिंग "0xA" ठीक से संख्या 10 हालांकि, स्ट्रिंग "22.5" 22 में परिवर्तित हो जाएगा में बदल जाता है क्योंकि दशमलव बिंदु है एक पूर्णांक के लिए एक अवैध चरित्र। कुछ उदाहरण:

var iNum1 = parseInt ("1234blue"); // रिटर्न 1234

var iNum2 = parseInt ("0xA"); // रिटर्न 10

var iNum3 = parseInt ("22.5"); // रिटर्न 22

var iNum4 = parseInt ("blue"); // NaN

रिटर्न parseInt() विधि भी एक मूलांक मोड है आप एक पूर्णांक में द्विआधारी, अष्टाधारी, षोडश आधारी, या किसी अन्य आधार में तार कन्वर्ट करने के लिए अनुमति देता है।मूलांक parseInt(), तो एक फोन करने के लिए एक दूसरा तर्क एक हेक्साडेसिमल मान पार्स करने के लिए के रूप में निर्दिष्ट किया जाता है इस तरह दिखता है:

वर iNum1 = parseInt ("वायुसेना", 16); // रिटर्न 175

बेशक

, यह भी द्विआधारी, अष्टाधारी के लिए किया जा सकता है, और यहां तक ​​दशमलव (जो डिफ़ॉल्ट मोड है):

वर iNum1 = parseInt ("10", 2); // रिटर्न 2

var iNum2 = parseInt ("10", 8); // रिटर्न 8

var iNum2 = parseInt ("10", 10); // रिटर्न 10

यदि दशमलव संख्याओं में अग्रणी शून्य होता है, तो रेडिक्स को 10 के रूप में निर्दिष्ट करना हमेशा सर्वोत्तम होता है ताकि आप गलती से अंडाकार मान के साथ समाप्त न हों। उदाहरण के लिए:

var iNum1 = parseInt ("010"); // रिटर्न 8

var iNum2 = parseInt ("010", 8); // रिटर्न 8

var iNum3 = parseInt ("010", 10); // रिटर्न 10

इस कोड में, दोनों पंक्तियां एक संख्या में स्ट्रिंग "010" को पार्स कर रही हैं। पहली पंक्ति सोचती है कि स्ट्रिंग एक ऑक्टल मान है और इसे पार्स करता है जैसे दूसरी पंक्ति (जो रेडिक्स को 8 के रूप में निर्दिष्ट करती है)। अंतिम पंक्ति 10 का एक मूलांक निर्दिष्ट करता है, तो iNum3 जब parseFloat() कि स्ट्रिंग दशमलव के रूप, अष्टाधारी नहीं या हेक्साडेसिमल में एक फ्लोटिंग प्वाइंट संख्या का प्रतिनिधित्व करना चाहिए का उपयोग कर 10.

एक और अंतर के बराबर समाप्त होता है । यह विधि प्रमुख शून्यों को अनदेखा करती है, इसलिए ऑक्टल संख्या 0908 को 908 में पार्स किया जाएगा, और हेक्साडेसिमल संख्या 0xA NaN वापस कर देगा क्योंकि x फ़्लोटिंग-पॉइंट नंबर के लिए मान्य वर्ण नहीं है। ParseFloat() के लिए कोई रेडिक्स मोड भी नहीं है।

parseFloat() का उपयोग कर के कुछ उदाहरण:

वर fNum1 = parseFloat ("1234blue"); // रिटर्न 1234

var fNum2 = parseFloat ("0xA"); // रिटर्न 0

var fNum3 = parseFloat ("22.5"); // रिटर्न 22.5

var fNum4 = parseFloat ("22.34.5"); // रिटर्न 22.34

var fNum5 = parseFloat ("0908"); // रिटर्न 908

var fNum6 = parseFloat ("blue"); // रिटर्न NaN

Read More, Read More

Similar Question Read more here

+0

अच्छा, व्यापक उत्तर – nbrooks

+1

अच्छा जवाब। एक अनुरोध। आपने लिखा "var fNum1 = parseFloat (" 1234blue "); // रिटर्न 1234.0"। लेकिन वास्तविकता यह है कि जावास्क्रिप्ट में 1234.0 == 1234 क्योंकि केवल एक संख्यात्मक प्रकार है। ParseFloat परिणाम के लिए 1234.0 लिखकर और 1234 parseInt परिणाम के लिए आप इंगित करते हैं कि दो परिणामों के बीच एक अंतर है, वास्तव में जब नहीं है। – Amir

+3

पार्सफ्लैट ("0xA"); कम से कम मेरे परीक्षण में NaN वापस नहीं करता है। यह 0 देता है क्योंकि यह 0 पर विश्लेषण करता है और एक्स पर रुक जाता है। – rocketsarefast