如何检查c#中的数字是否可以被整除?

Abi*_*Abi 3 c# math floating-point double division

我需要知道如何做这个程序.

calculation1: 1/4 = 0,25
calculation2: 1/8 = 0,125
calculation3: 47/183 = 0,25683060109289617486338797814207......
calculation4: 58/889 = 0,06524184476940382452193475815523......
calculation5: 1/5 = 0,2
Run Code Online (Sandbox Code Playgroud)

计算1,2和5的结果将得到一个简短的结果,没有句号或无穷无尽的数字串.计算3和4的结果非常长且复杂.

如何检查哪个计算是"简单计算"并给出"短"结果.

我试过这个并且肯定给出了错误的结果......就像你看到的那样,计算结果double在我的应用程序中有数据类型.

static bool IsInt(double x)
    {
        try
        {
            int y = Int32.Parse(x.ToString());
            return true;
        }
        catch
        {
             return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我希望很清楚我在问什么.

Mar*_*ers 16

如果在尽可能地减少分数之后,分母可以表示为2的幂乘以5的幂,则十进制表示终止.否则它会无限期地重复.

您可以测试您的部门是否"良好",如下所示:

public bool IsGoodDivision(int a, int b)
{
    while (b % 2 == 0) { b /= 2; }
    while (b % 5 == 0) { b /= 5; }
    return a % b == 0;
}
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:ideone

请注意,我将分子和分母分别传递给方法.如果先进行除法,然后将结果传递给方法,则由于浮点表示错误而导致精度损失.

同样对于生产代码,您应该检查它,b != 0因为它不允许除以0.如果没有检查,上面的代码将进入无限循环.