2011-01-16 11 views
16

मैं जावास्क्रिप्ट के लिए एक नौसिखिया हूं इसलिए मुझे माफ़ कर दो अगर मुझे गूंगा लगता है क्योंकि मैंने W3Fools से कुछ जावास्क्रिप्ट सीखा है (जो वास्तव में कठिन ट्यूटोरियल हैं - वे कुछ भी नहीं बताते हैं जो मैं जानना चाहता हूं, लेकिन जो कुछ भी मैं संभवतः कर सकता हूं सी ++ के साथ अपने अनुभव से अनुमान लगाओ)।जावास्क्रिप्ट में एकीकृत

मैं MDN पर स्विच कर रहा हूं, लेकिन यदि आप किसी अन्य ट्यूटोरियल की अनुशंसा कर सकते हैं, तो यह बहुत अच्छा होगा।

फिर भी, इसलिए यहाँ मेरे सवाल है:

मैं सिर्फ this की कुछ लाइनें पढ़ा है, और जाहिरा तौर पर: जावास्क्रिप्ट में

नंबर "डबल परिशुद्धता 64 बिट प्रारूप हैं आईईईई 754 मूल्यों ", spec के अनुसार। इसमें कुछ दिलचस्प परिणाम हैं। जावास्क्रिप्ट में एक पूर्णांक जैसी कोई चीज नहीं है, इसलिए आपके आपके अंकगणितीय के साथ थोड़ा सावधान रहने के लिए है यदि आप सी या जावा में गणित के लिए उपयोग किए जाते हैं।

मैंने पहले से ही देखा है कि कुछ डेटा प्रकार हैं (चर के लिए) मैं सी ++ से उपयोग किया जाता हूं। लेकिन मुझे उम्मीद नहीं थी कि सभी नंबर स्वचालित रूप से float एस हो। int उदाहरणों का उपयोग करने का कोई तरीका नहीं है, float नहीं? जावास्क्रिप्ट का भविष्य का संस्करण int एस का समर्थन करेगा?

+4

MDN एक महान संसाधन है और अक्सर अतः यहाँ संदर्भित है। –

उत्तर

13

जावास्क्रिप्ट में वास्तव में केवल कुछ डेटा प्रकार हैं: ऑब्जेक्ट्स, संख्याएं और तार। जैसा कि आप पढ़ते हैं, जेएस नंबर सभी 64-बिट फ्लोट हैं। कोई इंक नहीं हैं प्रत्येक पूर्णांकों https://developer.mozilla.org/en/JavaScript_typed_arrays

तब तक, वहाँ तारों के रूप में पूर्णांक सरणियों स्टोर करने के लिए hackish तरीके हैं, और बाहर तोड़:

फ़ायरफ़ॉक्स 4 Typed Arrays, आप असली ints की सरणियों और इस तरह हो सकता है जहां के लिए समर्थन होगा charCodeAt() का उपयोग कर।

4

मुझे नहीं लगता कि यह कभी भी पूर्णांक का समर्थन करेगा। यह कोई समस्या नहीं है क्योंकि प्रत्येक हस्ताक्षरित 32 बिट पूर्णांक को 64 बिट फ़्लोटिंग पॉइंट नंबर के रूप में सटीक रूप से दर्शाया जा सकता है।

आधुनिक जावास्क्रिप्ट इंजन विशेष कोड उत्पन्न करने के लिए पर्याप्त स्मार्ट हो सकते हैं जब संख्या पूर्णांक होती है (जांच सुनिश्चित करने के लिए चेक की सुरक्षा के साथ), लेकिन मुझे यकीन नहीं है।

+3

सभी जेएस इंजन (स्पाइडरमोन्की के पहले कार्यान्वयन से पहले - पहले जेएस इंजन) ने संभव होने पर int32-maths का उपयोग किया है। – gsnedders

+2

यह कोई समस्या नहीं है ... जब तक आप 64-बिट int या बड़ा नहीं चाहते हैं। – Thanatos

+1

अच्छी तरह से, यह वास्तव में एक बड़ी समस्या हो सकती है। यदि आप जावास्क्रिप्ट को 100000 पूर्णांक भेजते हैं और इसे सारांशित करने के लिए कहते हैं, तो फ़्लोटिंग पॉइंट की समस्याएं आपको काफी अजीब जवाब दे सकती हैं। यही कारण है कि मुझे यह सवाल मिला। –

0

पूर्णांक के लिए शून्य समर्थन है। जब भी आपको इसकी आवश्यकता होती है तो यह एक चर को घुमाए जाने का एक साधारण मामला होना चाहिए। प्रदर्शन ओवरहेड बिल्कुल बुरा नहीं है।

0

यदि आपको वास्तव में पूर्णांक का उपयोग करने की आवश्यकता है, तो बस आपके सामने आने वाली प्रत्येक संख्या पर फ़्लोर विधि का उपयोग करें।

इसके अलावा, जावास्क्रिप्ट का ढीला टाइपिंग इसकी ताकत है।

2

इस का उपयोग करें:

function int(a) { return Math.floor(a); } 

और यो इस तरह इसका इस्तेमाल कर सकते हैं:

var result = int(2.1 + 8.7 + 9.3); //int(20.1) 
alert(result);      //alerts 20 
+0

क्या 'Math.floor' के थोड़ा उपनाम बनाने के अलावा इस पर कोई और मुद्दा है? –

+1

वास्तव में नहीं ..... – qwertymk

+13

अतिरिक्त फ़ंक्शन कॉल से बचने के लिए मैं 'var int = Math.floor;' का उपयोग करूंगा। – ChaosPandion

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