Why c# decimals can't be initialized without the M suffix?

Viewed 29992
public class MyClass
{
    public const Decimal CONSTANT = 0.50; // ERROR CS0664   
}

produces this error:

error CS0664: Literal of type double cannot be implicitly converted to type 'decimal'; use an 'M' suffix to create a literal of this type

as documented. But this works:

public class MyClass
{
    public const Decimal CONSTANT = 50; // OK   
}

And I wonder why they forbid the first one. It seems weird to me.

6 Answers
Related