2012-08-23 16 views
5

दोपहर के भोजन के ब्रेक में हमने double मूल्य प्रकार की सटीकता के बारे में बहस शुरू कर दी।दशमलव बिंदु

मेरा सहयोगी सोचता है, दशमलव बिंदु के बाद हमेशा 15 स्थान होते हैं।

मेरी राय एक नहीं बता सकता, क्योंकि आईईईई 754 मान्यताओं इस बारे में नहीं है और यह जहां पहले 1 द्विआधारी प्रतिनिधित्व में है पर निर्भर करता है। (यानि दशमलव बिंदु से पहले संख्या का आकार भी)

कोई और अधिक योग्य कथन कैसे बना सकता है?

+0

क्या आप पूर्ण शर्तों में या वैज्ञानिक नोटेशन के अनुसार तर्क कर रहे हैं?आप 0.001e5 जैसे नंबर पर कैसे विचार करेंगे? –

+0

हम इसके बारे में बिल्कुल बात कर रहे थे। मेरा कॉलेग्यू दशमलव बिंदु के बाद 15 स्थानों पर जोर देता है। मेरी राय यह है कि आपके पास सभी स्थानों के लिए 53 बिट मंटिसा है। लेकिन एक योग्य तरीके से समझाने में कठिनाइयों की प्रतीत होती है। –

+0

बस इसे और स्पष्ट करने के लिए: यह विशेष रूप से एक सी # मुद्दा है। यदि आंतरिक सी # प्रतिनिधित्व आईईईई 754 नहीं है लेकिन दशमलव बिंदु के बाद 15 स्थान हैं, तो यह बेहद दिलचस्प है। –

उत्तर

3

जैसा कि C# reference द्वारा बताया गया है, सटीक दशमलव बिंदु से पहले या उसके बाद 15 से 16 अंकों (प्रतिनिधित्व किए गए दशमलव मानों के आधार पर) है।

संक्षेप में, आप सही हैं, यह दशमलव बिंदु से पहले और बाद के मानों पर निर्भर करता है।

उदाहरण के लिए:

  • 12345678.1234567D // अगला अंकों का अधिकार को गिरफ्तार किया जाएगा
  • 1234567.12345678D // दाईं ओर अगला अंकों पर गोल

पूर्ण नमूना हो जाएगा: http://ideone.com/eXvz3

इसके अलावा, double के बारे में सोचने की कोशिश कर रहे दशमलव मान के रूप में मूल्य एक अच्छा विचार नहीं है।

+2

बस इसे इंगित करने के लिए, इसका मतलब है _total_ में 15 अंक, केवल दशमलव बिंदु _after_ नहीं। –

-1

सी # युगल एक 53 बिट significand पी (या अपूर्णांश) और एक 11 बिट प्रतिपादक है, जो एक सीमा -1022 और 1023. के बीच उनके मूल्य इसलिए

है साथ आईईईई 754 के अनुसार प्रतिनिधित्व कर रहे हैं
p * 2^e 

महत्व बिंदु हमेशा दशमलव बिंदु से पहले एक अंक है, इसलिए इसके fractional भाग की सटीकता तय की गई है। दूसरी ओर दशमलव बिंदु के बाद अंकों की संख्या डबल पर निर्भर करती है; जिनकी संख्याएं एक्सपोनेंट महत्व के आंशिक भाग में अंकों की संख्या से अधिक है और उनके पास एक आंशिक हिस्सा नहीं है।

What Every Computer Scientist Should Know About Floating-Point Arithmetic शायद इस विषय पर सबसे व्यापक रूप से मान्यता प्राप्त प्रकाशन है।

4

आप दोनों गलत हैं। सामान्य double में 53 बिट्स सटीक हैं। यह लगभग 16 दशमलव अंकों के बराबर है, लेकिन double मानों के बारे में सोचते हुए कि वे दशमलव थे, भ्रम का कोई अंत नहीं होता है, और सबसे अच्छा बचा जाता है।

यह कहा गया है कि, आप अपने सहयोगी से सही होने के करीब हैं - सटीक मूल्य के प्रतिनिधित्व के सापेक्ष है; पर्याप्त बड़े double के पास कोई सटीक के आंशिक अंक हैं।

उदाहरण के लिए, 4503599627370496.0 से अगला डबल बड़ा 4503599627370497.0 है।

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