2015-04-16 5 views
1

Есть ли простой способ конвертировать сказать 1.3333333 сказать 1 + 1/3 в C#? Существует код только для фракции, но не для всего числа. Должен ли я просто вытащить это, прежде чем использовать фракцию?Преобразование двойной строки в строку в C#

+0

Может быть что-то здесь с помощь? [Алгоритм для упрощения десятичных дробей] (http://stackoverflow.com/questions/5124743/algorithm-for-simplifying-decimal-to -fractions) –

+0

Вам нужна именно [продолжаемая фракция] (http: //en.wikipedia .org/вики/Continued_fraction) – goGud

ответ

0

Я думаю, это будет сложно. Две причины:

  1. Фракцию всегда можно преобразовать в десятичное число, а десятичное иногда теряет цифры, поэтому точный в обе стороны было бы невозможно. Например: какое число квалифицируется для преобразования в 1/3 ?:

    • 0,33?
    • 0,3333333?
    • 0,333333333333333333333333333333333333333333333333333333333333333333333?
  2. Каждое десятичное число может быть преобразовано в мультипликативные дроби. Например: 0,25 может быть преобразовано в:

    • 1/4
    • 2/8
    • 25/100

Однако, если вы открыты для некоторых менее точных решений , попробуйте: Algorithm for simplifying decimal to fractions

0

Вы должны установить максимальный знаменатель, например, 1 000 000 (одна милиона) и попытаться сократить. Вы должны знать о может привести к потере точности

Например у вас есть 1.450

  1. Берет дробную часть и мультипликатор вашего знаменателя, то 450 000/1 000 000
  2. Тогда вы найдете «наибольшей общий делитель»
  3. Divide как часть по делителю от предыдущей точки
  4. Наконец, вы получите ваши фракции 9/20
Смежные вопросы