我需要知道如何执行此过程。
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
计算 1、2 和 5 的结果将给出一个简短的结果,没有句点或无穷无尽的数字串。计算3和4的结果很长很复杂。
如何检查哪个计算“简单”并给出“简短”结果。
我试过了,结果肯定是错误的……
如您所见,计算结果在我的应用程序中的数据类型为 double
。
static bool IsInt(double x)
{
try
{
int y = Int32.Parse(x.ToString());
return true;
}
catch
{
return false;
}
}
我希望我问的很清楚。
最佳答案
如果尽可能减少分数后,分母可以表示为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;
}
在线查看它:ideone
请注意,我将分子和分母分别传递给该方法。如果您先进行除法,然后将结果传递给您的方法,则由于浮点 representation error 而失去精度.
对于生产代码,您还应该检查 b != 0
,因为不允许除以 0。如果不检查,上述代码将进入无限循环。
关于c# - 如何检查 C# 中的数字是否可整除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097805/