int i = 1; // -2,147,483,648 to 2,147,483,647
float f = 2.1f; // -3.402823e38 to 3.402823e38
long l = 3; // -922337203685477508 to 922337203685477507
double dbl = 4.5; // -1.79769313486232e308 to 1.79769313486232e308
decimal dec = 5.2m; // -79228162514264337593543950335 to 79228162514264337593543950335
dec = i; // No error
dec = l; // No error
dec = f; // Compiler error
dec = dbl; // Compiler error
f = (float)dec; // No error (May loss precision) ok
**dec = (decimal)dbl;** // No error why it requires ?
왜 위 코드에 명시 적 캐스트가 필요한지? float/Double의 범위> 10 진수?C에서 소수점 이하로 변환
답장을 보내 주셔서 감사합니다. 그러나 float에 대한 이야기도 마찬가지입니까? –
@MSK'float'은 여전히 x10^38 (e38이 의미하는) 범위를 가지므로 YES입니다. 또한, 'foat.NaN','float.PositiveInfinity','float.NegativeInfinity' ... 비교를 위해 소수점의 범위는 e28 –
decimal dec = decimal.MaxValue; float flt = (float) dec; // OK. 나는 다운 캐스팅을 할 때 명시적인 변환이 필요하다고 가정합니다. 십진수의 범위