C#中带小数的整除问题
两个double类型的数(d1, d2), 如何才能知道d1是否整除d2?
用过了 "/ ", 也试过了 "% ", 都不行, 主要是它的位数问题
例如, 以下的一个函数用来检查d1是否整除d2
public bool check(double d1, double d2)
{
bool result = false;
int tmp = 0;
double tmp2 = 0d;
tmp = (int)(d1 / d2);
tmp2 = d2 * tmp;
if (tmp2 == d1)
{
result = true;
}
return result;
}
这个函数, 在d1=15.85, d2=0.05时, tmp2=15.85000000000001
有什么好的方法可以检查一个数是否整除另一个数?
------解决方案--------------------if (Math.Truncate(double,result)==resulet);
{
}
------解决方案--------------------public static System.Double IEEERemainder ( System.Double x , System.Double y )
System.Math 的成员
摘要:
返回一指定数字被另一指定数字相除的余数。
小于一定数值的就可以认为余数是0了。
d1=15.85, d2=0.05时,结果是10的-15次方
------解决方案--------------------public bool check(double d1, double d2)
{
bool result = false;
double tmp =d2;
//d2的小数位数
int i=(Convert.ToString(d2).Length- Convert.ToString(d2).IndexOf( ". ")-1);
while(d2 <d1)
{
d2=d2+tmp;
}
//只取小数位后I位
string newstr=Convert.ToString(d2).Substring(0,Convert.ToString(d2).IndexOf( ". ")+1+i);
if (Convert.ToDouble(newstr) == d1)
{
result = true;
}
return result;
}