日期:2014-05-19  浏览次数:21035 次

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;
}