제가정수 값을 곱하는 동안 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;
}
아무도 이유를 설명 할 수 있습니까?