[C#] double을 int로 변환

을 변환하는 가장 좋은 방법은 무엇입니까 double로는 int? 캐스트를 사용해야합니까?



답변

기본 자르기를 0으로 설정하려는 경우 캐스트를 사용할 수 있습니다. 또한, 사용할 수있는 Math.Ceiling, Math.Round, Math.Floor등 – 당신은 아직도 이후에 깁스를해야하지만.

의 범위 int가의 범위보다 훨씬 작다는 것을 잊지 마십시오 double. 발 캐스트 double에이 int값의 범위를 벗어난 경우에 예외가 발생하지 않을 것이다 int체크되지 않은 상황에서 호출 반면 Convert.ToInt32(double)된다. 값이 범위를 벗어나면 캐스트 결과 (확인되지 ​​않은 컨텍스트)가 명시 적으로 정의되지 않습니다.


답변

캐스트를 사용하는 경우 즉 (int)SomeDouble, 분수 부분이 잘립니다. 즉, SomeDouble4.9999 인 경우 결과는 5가 아니라 4가됩니다. int로 변환해도 숫자가 반올림되지 않습니다. 반올림을 사용하려면Math.Round


답변

그래, 왜 안돼?

double someDouble = 12323.2;
int someInt = (int)someDouble;

Convert수업 사용 도 잘 작동합니다.

int someOtherInt = Convert.ToInt32(someDouble);


답변

Convert.ToInt32 변환하는 가장 좋은 방법입니다


답변

가장 좋은 방법은 간단하게 사용하는 것 Convert.ToInt32입니다. 빠르며 올바르게 반올림됩니다.

왜 더 복잡하게 만드나요?


답변

여기 완전한 예가 있습니다

class Example
{
  public static void Main()
  {
    double x, y;
    int i;

    x = 10.0;
    y = 3.0;

    // cast double to int, fractional component lost (Line to be replaced) 
    i = (int) (x / y);
    Console.WriteLine("Integer outcome of x / y: " + i);
  }
}

숫자를 더 가까운 정수로 반올림하려면 다음을 수행하십시오.

i = (int) Math.Round(x / y); // Line replaced


답변

가장 좋은 방법은 Convert.ToInt32입니다.