Programing

double을 int로 변환

crosscheck 2020. 6. 21. 19:44
반응형

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입니다.


int myInt = (int) Math.Ceiling (myDouble);


내 길은 :

 - Convert.ToInt32(double_value)
 - (int)double_value
 - Int32.Parse(double_value.ToString());

label8.Text = "" + years.ToString("00") + " years";

레이블이나 무언가로 보내려고 할 때 분수 구성 요소를 원하지 않으면 이것이 가장 좋은 방법입니다

label8.Text = "" + years.ToString("00.00") + " years";

2로만 원하면 항상 그렇게

참고 URL : https://stackoverflow.com/questions/4181942/convert-double-to-int

반응형