2011-07-29 35 views
0

我有功能以截断双重数据类型vaiable这将在下面如何使用double数据类型乘以Integer值?

   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; 


    } 

实施例中给出的小数位:tobeTruncated = 35.66 dividefactor = 100

当执行上面的行,我是得到的值为3565.9999999999995,而不是。我不知道原因。

当我将双变量改为十进制时,我得到正确答案。具有正确答案的修改函数如下:

  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; 

    } 

任何人都可以解释背后的原因吗?

回答

相关问题