मुझे संदेह है कि यह वास्तव में एक कंपाइलर त्रुटि है।
यहाँ दिखाने के लिए एक छोटा लेकिन पूरा कार्यक्रम इसलिए मुझे लगता है कि:
using System;
class Test
{
static void Main()
{
decimal constant = decimal.MaxValue/10m;
decimal calculated = decimal.MaxValue;
calculated /= 10m;
Console.WriteLine (constant);
Console.WriteLine (calculated);
}
}
आउटपुट:
7922816251426433759354395034
7922816251426433759354395033.5
मैं कल्पना में खुदाई करेंगे देखने के लिए क्या गारंटी दी जाती है।
संपादित करें: कल्पना में, खंड 7.18 का दावा है:
निरंतर अभिव्यक्ति के संकलन समय मूल्यांकन गैर निरंतर अभिव्यक्ति के रन-टाइम मूल्यांकन के रूप में ही नियमों का उपयोग करता है, कि जहां को छोड़कर रन-टाइम मूल्यांकन में एक अपवाद फेंक दिया जाएगा, संकलन-समय मूल्यांकन एक संकलन-समय त्रुटि होने का कारण बनता है।
यह स्पष्ट रूप से यहां मामला नहीं है। हम्म।
संपादित करें: मैंने a bug to Microsoft Connect सबमिट किया है। हम देखेंगे कि इसके साथ क्या होता है।
स्रोत
2008-12-04 20:04:56
यह जोर से विभाजित कर रहे हैं अतिक्रमण कर रहे हैं असफल: Assert.IsTrue (Decimal.MaxValue/10 मी == 7922816251426433759354395033.5m); – izokurew
यूप, यह लगातार जांच कर रहा है। असल में संकलक निरंतर अंकगणित यहां गलती है, मुझे विश्वास है। –