用C#计算比率

Gat*_*ler 17 c# string-formatting

我认为这很简单,但搜索谷歌似乎并没有帮助.

我基本上试图编写一个函数,当有两个整数(例如800和600)时,它会返回一个字符串比例(例如4:3).

string GetRatio(Int A, Int B) {
    // Code I'm looking for
    return Ratio;
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 34

您可以通过将分子和分母除以GCD来简化分数:

var gcd = GCD(A, B);
return string.Format("{0}:{1}", A / gcd, B / gcd)
Run Code Online (Sandbox Code Playgroud)

并且使用欧几里得算法计算GCD的一个非常基本的功能:

static int GCD(int a, int b) {
    return b == 0 ? Math.Abs(a) : GCD(b, a % b);
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*onk 5

您基本上是想获得两个数字的最大公分母 - GCD,然后将它们除以该值,从而得到您的字符串吗?

即:800:600;最大公约数 = 200 因此 4:3。

这将能够处理所有整数。抱歉没有发送代码,但我认为从这里开始它应该足够简单了。

public int GCD(int a, int b)

{
    while (a != 0 && b != 0)
    {
         if (a > b)
            a %= b;
         else
            b %= a;
    }
     if (a == 0)
         return b;
     else
         return a;
}

// Using Konrad's code: 

var gcd = GCD(A, B);
return string.Format("{0}:{1}", A / gcd, B / gcd)
Run Code Online (Sandbox Code Playgroud)