我正在寻找一个库或现有代码来简化分数.
有没有人有任何手头或任何链接?
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)
我没有尝试过代码,但看起来很简单(假设你的数字都是正整数而你没有传递一个空数组).
您可以使用 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)