2017-12-14 82 views
7

जबजावास्क्रिप्ट parseInt रूपांतरण गाड़ी

console.log(parseInt("9658921879781125"))
यह जो मूल मूल्य से भी कम है 9658921879781124 के एक मूल्य देता है चल रहा है।

ऐसा क्यों है?

+1

http://2ality.com/2012/07/large-integers.html –

+0

लेकिन यह 9658921879781126 ठीक से –

+1

देखें जी Petrioli के जवाब में परिवर्तित करने में सक्षम है। यह असुरक्षित है, इसका मतलब यह नहीं है कि यह हर बार असफल हो जाएगा। – NikxDa

उत्तर

4

होगा ऐसा इसलिए है क्योंकि

9658921879781125 > Number.MAX_SAFE_INTEGER // true 

तो यह असुरक्षित है की तुलना में Number.MAX_SAFE_INTEGER


MAX_SAFE_INTEGER लगातार अधिक से अधिक संख्या के साथ काम करने की कोशिश करने के 9007199254740991 के एक मूल्य (9,007,199,254,740,991 या है ~ 9 क्वाड्रिलियन)। (2 - - 1) और 2 - 1.

उस नंबर के पीछे तर्क है कि जावास्क्रिप्ट आईईईई 754 में निर्दिष्ट है और केवल सुरक्षित रूप से बीच के अंक का प्रतिनिधित्व कर सकते के रूप में डबल परिशुद्धता फ्लोटिंग प्वाइंट प्रारूप संख्या का उपयोग करता है इस संदर्भ में सुरक्षित पूर्णांक का प्रतिनिधित्व करने की क्षमता और सही ढंग से उनकी तुलना करने की क्षमता को संदर्भित करता है

संबंधित मुद्दे