鉴于 Decimal.MaxValue = 79228162514264337593543950335m
为什么下一行在本地窗口中给出的是7922816251426433759354395034M而不是预期的7922816251426433759354395033.5m?
Decimal target = Decimal.MaxValue / 10m;
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
这显然不是在这种情况下的情况。嗯。常量表达式的编译时评估使用与非常量表达式的运行时评估相同的规则,只是当运行时评估会引发异常时,编译时评估会导致发生编译时错误。