문제

나는 다른 게시물에,누군가가 수행 같은 것:

double d = 3.1415;
int i = Convert.ToInt32(Math.Floor(d));

그들은 왜를 사용합 변환 기능보다:

double d = 3.1415;
int i = (int)d;

는 암시적 지면과 변환합니다.

또한,더 많은에 관하여,내가 발견에서 생산 코드를 읽고 있었:

double d = 3.1415;
float f = Convert.ToSingle(d);

는 동일:

float f = (float)d;

모두들 그렇지 않으면 암시적 변환을 단지의 변환 등에 대한 완전성,또는 그들은 목적?이해할 수 있습합니다.ToString(),지 않습니다.

도움이 되었습니까?

해결책

주 int 는 암시적 잘림지,바닥재를 암시적:

double d = -3.14;
int i = (int)d;
// i == -3

내가 선택한 수학이다.층 수학이다.라운드를 기도는 더 분명하게 명시되어 있습니다.

다른 팁

반올림은 또한 다르게 처리:

x=-2.5(int)x=-2 변환합니다.ToInt32(x)=-2
x=-1.5(int)x=-1 변환합니다.ToInt32(x)=-2
x=-0.5(int)x=0 변환합니다.ToInt32(x)=0
x=0.5(int)x=0 변환합니다.ToInt32(x)=0
x=1.5(int)x=1 변환합니다.ToInt32(x)=2
x=2.5(int)x=2 변환합니다.ToInt32(x)=2

통 x=-1.5 및 x=1.5 경우입니다.
에서 알고리즘 반올림하는 데 사용되는 방법에 중요한 다른 대답이다.

당신이 사용할 수 있습으로 변환할 때가는 문자열로 변환할 int

int i = Convert.ToInt32("1234");

변환하고 캐스팅을 것이 모두 예외를 던지는 경우 그들은 실패합니다.

i.e 이것은 여전히 던지는 예외는 아니다,그 반환하지 않습니다 0:

Convert.ToInt32("1234NonNumber");

많은 경우에 변환 및 주물이 동일한 결과를 얻을 수 있다,하지만 캐스팅은 종종 쉽게 읽을 수 있습니다.

변환합니다.ToInt32()를 사용한 문자열에(http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx)동안 캐스팅에서만 사용할 수 있는 형식의 내부 컨버터(숫자 형식).진짜 속에서 오는 사이에 결정 Int32.분석하고 변환합니다.ToInt32().변환합니다.ToInt32()관용의 null 과 0 을 반환합니다 동안 Int32.Parse()을 던져 ArgumentNullException.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top