The type of a literal without the m
suffix is double
- it's as simple as that. You can't initialize a float
that way either:
float x = 10.0; // Fail
The type of the literal should be made clear from the literal itself, and the type of variable it's assigned to should be assignable to from the type of that literal. So your second example works because there's an implicit conversion from int
(the type of the literal) to decimal
. There's no implicit conversion from double
to decimal
(as it can lose information).
Personally I'd have preferred it if there'd been no default or if the default had been decimal
, but that's a different matter...
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…