我有功能以截断双重数据类型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;
}
任何人都可以解释背后的原因吗?