2011-06-25 7 views
26

उदाहरण के लिए, में:डबल क्यों है। पर्स शून्य के संकेत को अनदेखा करते हैं?

bool eq = (1/double.Parse("-0.0")) == (1/-0.0); 

eqfalse हो जाएगा।

double.Parse शून्य के लिए संकेत को स्पष्ट रूप से अनदेखा करने के लिए कुछ परेशानी से गुजरना होगा, भले ही ऐसा न हो कि लगभग किसी समस्या का नतीजा न हो। चूंकि मुझे कच्चे प्रतिनिधित्व की आवश्यकता है, इसलिए मुझे अपना खुद का पार्सिंग फ़ंक्शन लिखना पड़ा जो विशेष मामलों के नकारात्मक शून्य और अन्य सभी चीज़ों के लिए double.Parse का उपयोग करता है।

यह एक बड़ी समस्या नहीं है, लेकिन मैं वास्तव में सोच रहा हूं कि उन्होंने शून्य के हस्ताक्षर को अनदेखा करने का निर्णय क्यों लिया, क्योंकि ऐसा लगता है कि ऐसा नहीं करना एक बुरी बात नहीं होगी।

+0

आपको शून्य के संकेत की आवश्यकता क्यों होगी? आईईईई 754 बताता है कि '0 == -0' सब के बाद। –

+0

आपका कोड उदाहरण DivideByZeroException को क्यों नहीं फेंकता है? – FishBasketGordo

+0

@ डोनल: क्योंकि मुझे बाइट्स में कच्चे प्रतिनिधित्व की आवश्यकता है, और यह अलग है। @ फिशबस्केट गॉर्डो: क्योंकि आईईईई 754 फ्लोटिंग पॉइंट में शून्य से विभाजन कानूनी और अच्छी तरह से परिभाषित है। – harold

उत्तर

2

मैं क्यों से प्रति के बारे में पता नहीं है, लेकिन एक संभावित समाधान: यदि आप शुरुआत में एक - चरित्र देखते हैं, तो स्ट्रिंग के बाकी पार्स और फिर इसे नकारना।

+0

यकीन है कि यह काम करता है, '(1/-0.0) '' (1/0.0)' को बदलने का प्रयास करें - परिणाम 'सत्य' होगा क्या आप NaN के बारे में सोच रहे हैं? – harold

+0

@हरोल्ड: अजीब, नहीं, मैंने सोचा कि यह अनंतता के लिए भी काम नहीं करता है। (इसके लिए समझ में नहीं आता है।) लेकिन हाँ आप सही हैं, धन्यवाद। – Mehrdad

+0

+ ∞ गणित की किसी भी आधुनिक व्याख्या में -∞ के बराबर नहीं है ... –

-3
वहाँ

अंतर है: - = 0, 1/0

  1. double.Parse ("0.0") -> INF

  2. 1/-0,0 -> -INF

लेकिन कथन 2 में शून्य ऑपरेटर का मतलब "-0.0" नहीं है।

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