2011-07-29 4 views
0

제가정수 값을 곱하는 동안 double 데이터 유형을 사용하는 방법은 무엇입니까?

   public double GetTruncate(double tobeTruncated, int divideFactor) 
     {    
     if (divideFactor == 0) 
      return Math.Truncate((double)tobeTruncated); 
     else 
     { 
      tobeTruncated = tobeTruncated * divideFactor; 
      tobeTruncated = Math.Truncate((double)tobeTruncated); 
      tobeTruncated = tobeTruncated/divideFactor; 
     } 
     return tobeTruncated; 


    } 

실시 예에 대해서 설명한다 vaiable 이중 데이터 유형의 소수점을 절단하는 기능을 구비하고있다 : tobeTruncated = 35.66 dividefactor 상기 라인 실행 동안 = 100

, 내가 tobeTuncated 값을 3565.9999999999995으로 변경하는 대신 대신. 나는 그 이유를 모른다.

double 변수를 10 진수로 변경하면 올바른 대답이 표시됩니다. 정답을 사용하여 수정 된 함수는 다음과 같습니다.

  public double GetTruncate(double tobeTruncated, int divideFactor) 
    {   

     decimal nTempData = (decimal)tobeTruncated; 
     if (divideFactor == 0) 
      return (double)Math.Truncate((decimal)nTempData); 
     else 
     { 
      nTempData = nTempData * divideFactor; 
      nTempData = Math.Truncate((decimal)nTempData); 
      nTempData = nTempData/(decimal)divideFactor; 
     } 
     return (double)nTempData; 

    } 

아무도 이유를 설명 할 수 있습니까?

답변

관련 문제