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