Avatar ·

C# में Decimal को Double में बदलना: सटीकता (precision) के नुकसान से कैसे बचें?

सभी को नमस्कार! मैं C# में नया हूँ और वित्तीय गणनाओं के साथ काम करते समय एक समस्या का सामना कर रहा हूँ। मेरे पास `decimal` प्रकार का एक वेरिएबल है, जिसमें पैसे की राशि पैसे तक सटीकता के साथ संग्रहीत है (उदाहरण के लिए, 123.45m)। मुझे इस मान को एक ऐसी method में पास करना है जो `double` प्रकार का पैरामीटर लेती है। \n\nमैंने सरल explicit casting आज़माया: `(double)myDecimal`, और कोड compile हो गया। लेकिन जब मैंने परिणाम प्रिंट किया, तो मैंने देखा कि संख्या कभी-कभी बदल जाती है। उदाहरण के लिए, `123.45m` `123.44999999999999` में बदल गया। इससे गणनाओं में त्रुटियाँ होती हैं।\n\nयहाँ मेरे कोड का एक उदाहरण है:\n\n```csharp\ndecimal price = 123.45m;\ndouble convertedPrice = (double)price;\nConsole.WriteLine(convertedPrice); // आउटपुट: 123.44999999999999\n```\n\nऐसा क्यों होता है? मैंने सोचा था कि `double` बड़ी संख्याएँ store कर सकता है, लेकिन सटीकता क्यों खो रही है?