我怎样才能计算分数和模整数?

我怎样才能计算除法和模数整数在C#中?

在提出这类问题之前,请查看MSDN文档 。

当你分两个整数时,结果总是一个整数。 例如,5/2的结果是2.要确定5/2的余数,请使用模运算符(%)。

 int a = 5; int b = 3; int div = a / b; //div is 1 int mod = a % b; //mod is 2 

还有Math.DivRem

 quotient = Math.DivRem(dividend, divisor, out remainder); 

使用/运算符执行分区:

 result = a / b; 

Modulo除法使用%运算符完成:

 result = a % b; 

有趣的事实!

“模数”操作定义为:

 a % n ==> a - (a/n) * n 

参考: 模块化算术

所以你可以推出自己的,虽然它会比内置的%运算符慢:

 public static int Mod(int a, int n) { return a - (int)((double)a / n) * n; } 

编辑:哇,原来这里相当糟糕,谢谢@ joren来抓我

现在在这里,我依赖于C#中的division + cast-to-int等于Math.Floor (也就是说,它会减less分数)的事实,但是一个“真正的”实现可能是这样的:

 public static int Mod(int a, int n) { return a - (int)Math.Floor((double)a / n) * n; } 

事实上,你可以看到%和“真模数”之间的区别如下:

 var modTest = from a in Enumerable.Range(-3, 6) from b in Enumerable.Range(-3, 6) where b != 0 let op = (a % b) let mod = Mod(a,b) let areSame = op == mod select new { A = a, B = b, Operator = op, Mod = mod, Same = areSame }; Console.WriteLine("ABA%B Mod(A,B) Equal?"); Console.WriteLine("-----------------------------------"); foreach (var result in modTest) { Console.WriteLine( "{0,-3} | {1,-3} | {2,-5} | {3,-10} | {4,-6}", result.A, result.B, result.Operator, result.Mod, result.Same); } 

结果:

 ABA%B Mod(A,B) Equal? ----------------------------------- -3 | -3 | 0 | 0 | True -3 | -2 | -1 | -1 | True -3 | -1 | 0 | 0 | True -3 | 1 | 0 | 0 | True -3 | 2 | -1 | 1 | False -2 | -3 | -2 | -2 | True -2 | -2 | 0 | 0 | True -2 | -1 | 0 | 0 | True -2 | 1 | 0 | 0 | True -2 | 2 | 0 | 0 | True -1 | -3 | -1 | -1 | True -1 | -2 | -1 | -1 | True -1 | -1 | 0 | 0 | True -1 | 1 | 0 | 0 | True -1 | 2 | -1 | 1 | False 0 | -3 | 0 | 0 | True 0 | -2 | 0 | 0 | True 0 | -1 | 0 | 0 | True 0 | 1 | 0 | 0 | True 0 | 2 | 0 | 0 | True 1 | -3 | 1 | -2 | False 1 | -2 | 1 | -1 | False 1 | -1 | 0 | 0 | True 1 | 1 | 0 | 0 | True 1 | 2 | 1 | 1 | True 2 | -3 | 2 | -1 | False 2 | -2 | 0 | 0 | True 2 | -1 | 0 | 0 | True 2 | 1 | 0 | 0 | True 2 | 2 | 0 | 0 | True 

从用户读取两个整数。 然后计算/显示余数和商,

 // When the larger integer is divided by the smaller integer Console.WriteLine("Enter integer 1 please :"); double a5 = double.Parse(Console.ReadLine()); Console.WriteLine("Enter integer 2 please :"); double b5 = double.Parse(Console.ReadLine()); double div = a5 / b5; Console.WriteLine(div); double mod = a5 % b5; Console.WriteLine(mod); Console.ReadLine();