2010-09-03 22 views
7

कल्पना कीजिए कि ए - बी < सी (ए, बी, सी सी # डबल्स हैं)। क्या यह गारंटी है कि एक < बी + सी?सी # डबल परिशुद्धता समस्या

धन्यवाद!

संपादित
मान लें कि अंकगणितीय अतिप्रवाह निम्न उदाहरण के विपरीत नहीं होती हैं:

double a = 1L << 53; 
double b = 1; 
double c = a; 

Console.WriteLine(a - b < c); // Prints True 
Console.WriteLine(a < b + c); // Prints False 

कल्पना कीजिए कि Math.Abs ​​(क) < 1.0 & & Math.Abs ​​(ख) < 1.0 & & Math.Abs ​​(ग) < 1,0

+0

यह सी # या एक से संबंधित कैसे है वाई विशिष्ट डेटा प्रकार (या यहां तक ​​कि प्रोग्रामिंग)? मुझे शुद्ध गणित की तरह लग रहा है। –

+2

@Fredrik Mörk: नहीं, यह सब परिशुद्धता के बारे में है। – jgauffin

+1

@ फ़्रेड्रिक मोर्क: क्योंकि इसे गैर-पूर्णांक अंकगणित – BeRecursive

उत्तर

14

नहीं। मान लीजिए ए = सी, एक बहुत बड़ी संख्या, और बी बहुत छोटी संख्या है। यह संभव है कि a - b का प्रतिनिधित्व a से कम है, लेकिन a + ba (और बड़ा) के बहुत करीब है कि यह अभी भी a के रूप में सबसे सटीक रूप से प्रदर्शित होने वाला है।

यहाँ एक उदाहरण है:

double a = 1L << 53; 
double b = 1; 
double c = a; 

Console.WriteLine(a - b < c); // Prints True 
Console.WriteLine(a < b + c); // Prints False 

संपादित करें:

double a = 1.0; 
double b = 1.0/(1L << 53); 
double c = a; 

Console.WriteLine(a - b < c); // Prints True 
Console.WriteLine(a < b + c); // Prints False 

दूसरे शब्दों में, जब हम से एक बहुत छोटी संख्या घटाना:

यहाँ एक और उदाहरण है, जो आपकी संपादित प्रश्न से मेल खाता है 1, हमें 1 से कम परिणाम मिलते हैं। जब हम एक ही संख्या को 1 में जोड़ते हैं, तो हमें डबल परिशुद्धता की सीमाओं के कारण केवल 1 वापस मिलता है।

+0

+1, एक काउंटर उदाहरण द्वारा सबूत। इसे प्यार करना। –

+0

या दूसरी तरफ, मुझे यह भी महसूस हो रहा है कि ऐसा ही है। –

+2

'a = c = double.MaxValue' जब यह भी weirder हो जाता है। फिर दोनों झूठे हैं। –

6

कोई हमेशा नहीं:

 double a = double.MaxValue; 
     double b = double.MaxValue; 
     double c = 0.1; 
     Console.WriteLine(a - b < c); // True 
     Console.WriteLine(a < b + c); // False 
2

यह लिंक अंकगणित गुण फ्लोटिंग प्वाइंट के बारे में बोलती है, और बहुत ही दिलचस्प हो सकता है: संबंधों के गुण के लिए

FLOATING-POINT FALLACIES

विशेष रूप से, खोज

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