जे एस के साथ खेल रहा था और यह देखा।
क्यों parseInt (1e + 21 ) रिटर्न 1 और parseInt (1e + 20) रिटर्न 100000000000000000000 ? parseInt (10e + 20) भी 1 देता है?
क्यों parseInt (1.7976931348623157E + 10308); रिटर्न NaN जबकि parseFloat (1.7976931348623157E + 10308) देता है < कोड> इन्फिनिटी ?
यहां तक कि एक फाइबोनैचि अनुक्रम बनाया गया है और कोई भी मान +21 एक्सपोनेंट केवल पहले अंक देता है:
पार्सफ़्लोट () वापस आएगा इन्फिनिटी तक सही संख्या।
(क्रोम में परीक्षण)
parseInt और parseFloat को तार पार्स करना चाहिए और उन्हें संख्या s में परिवर्तित करना होगा इसलिए, जब आप उन्हें एक संख्या पास करते हैं, तो यह दुभाषिए द्वारा एक स्ट्रिंग के लिए मजबूर हो जाता है। तो, कम से कम फ़ायरफ़ॉक्स में, "+ 1e + 20 आउटपुट " 100000000000000000000 ", और " + 1e + 21 " आउटपुट "1e + 21" ।
हम parseInt का पढ़ लें:
यदि parseInt में कोई वर्ण नहीं मिलता है जो कि अंक नहीं है निर्दिष्ट रेडिक्स, यह इसे और सभी सफल वर्णों की उपेक्षा करता है और उस बिंदु तक पूर्णांक मान देता है
ऐसा parseInt ("1.whatever") रिटर्न < कोड> 1 और parseInt ("32.231e + कुछ") 32 रिटर्न देता है।
ऐसी ही एक चीज़ parseFloat के साथ होनी चाहिए।
यह कमजोर टाइपिंग की गलती है। आईएमओ सही व्यवहार करता है जब आप ऐसा करते हैं तो अपवाद फेंकना होगा।
No comments:
Post a Comment