1

如何在 C# 中将分数与整数相加 ..: 2 + 1 1/5 = ??

或者

3 + 3/4 = ?? -----> 只是举例......:),它可以是 3 + 2/3 或 4 + 6/7..

请帮忙..谢谢大家.. :)

4

3 回答 3

4

好没问题。下载Microsoft Solver Foundation并使用Rational类型对小数进行算术运算。

于 2011-03-20T13:56:06.570 回答
3

您可以将每个分数更改为其等效的十进制值。然后操作它们。

记住整个分数可以用作:

1 1/4         => 1 + 1/4
2 1/5 + 2 2/3 => 2 + 1/5 + 2 + 2/3      

现在,请记住数据类型。

int i = 1/4;       // it will give 0 since i is int
decimal i = 1/4m   // ok, it will give  0.25;

例子:

decimal i = 2 + 1/5m + 2 + 2/3m;  //it will ok for  2 1/5 + 2 2/3


更新

C# 代码

decimal Fraction(string f)
    {
        var numbers = f.Split(' ', '+');
        decimal temp, result = 0.0m;
        decimal numerator, denominator;
        foreach (var str in numbers)
        {
            if (decimal.TryParse(str, out temp))
            {
                result += temp;
            }
            else if (str.Contains("/"))
            {
                var frac = str.Split('/');
                decimal.TryParse(frac[0], out numerator);
                decimal.TryParse(frac[1], out denominator);

                result += numerator / denominator;
            }
        }
        return result;
    }

用法:

decimal d = Fraction("2 2/3 + 5/7 + 1 1/4");     //4.630952380952380952380952381

// put a space between whole and fraction value   => 1 1/2
// put a + sign to add numbers between them       => 1 2/3 + 2/3

【注意:本程序只做加法,不做减法】

于 2011-03-20T08:52:58.830 回答
0

那不是“2 + 6/5”或“16/5”吗?如果我错了,请纠正我,但 c# 中没有分数。不过,有一些开源项目。

于 2011-03-20T08:54:42.090 回答