Как добавить дробь с целым ..? - PullRequest
1 голос
/ 20 марта 2011

как добавить дробь с целым в C # ..: 2 + 1 1/5 = ??

или

3 + 3/4 = ??-----> это просто для примера ... :), это может быть 3 + 2/3 или 4 + 6/7 ..

помогите пожалуйста .. спасибо всем ..:)

Ответы [ 3 ]

4 голосов
/ 20 марта 2011

Конечно, нет проблем.Загрузите Microsoft Solver Foundation и используйте тип Rational для арифметики с дробными числами.

3 голосов
/ 20 марта 2011

Вы можете изменить каждую дробь на ее эквивалентное десятичное значение. А потом управляй ими.

Помните, что целые дроби можно использовать как:

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


UPDATE

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

[ПРИМЕЧАНИЕ: эта программа предназначена только для сложения, а не для вычитания]

0 голосов
/ 20 марта 2011

Разве это не будет "2 + 6/5" или "16/5"?Поправьте меня, если я ошибаюсь, но в c # нет дробей.Для этого есть несколько проектов с открытым исходным кодом.

...