如何简化C#中的分数?

And*_*rry 5 c# math fractions

我正在寻找一个库或现有代码来简化分数.

有没有人有任何手头或任何链接?

PS我已经理解了这个过程但是真的不想重写这个轮子

更新

好吧,我已经检查了CodeProject上分数库 但是我有的问题比简化分数有点琐碎.

我必须减少百分比,可能是20%/ 50%/ 30%(总是等于100%)

Gab*_*abe 11

我想你只需要除以所有数字的GCD.

void Simplify(int[] numbers)
{
    int gcd = GCD(numbers);
    for (int i = 0; i < numbers.Length; i++)
        numbers[i] /= gcd;
}
int GCD(int a, int b)
{
    while (b > 0)
    {
        int rem = a % b;
        a = b;
        b = rem;
    }
    return a;
}
int GCD(int[] args)
{
    // using LINQ:
    return args.Aggregate((gcd, arg) => GCD(gcd, arg));
}
Run Code Online (Sandbox Code Playgroud)

我没有尝试过代码,但看起来很简单(假设你的数字都是正整数而你没有传递一个空数组).


Mat*_*hen 5

您可以使用 Microsoft.FSharp.Math.BigRational,它位于免费的F# Power Pack库中。虽然它依赖于 F#(它是免费的并且包含在 VS2010 中),但它可以从 C# 中使用。

BigRational reduced = BigRational.FromInt(4)/BigRational.FromInt(6);
Console.WriteLine(reduced);
    2/3
Console.WriteLine(reduced.Numerator);
    2
Console.WriteLine(reduced.Denominator);
    3
Run Code Online (Sandbox Code Playgroud)