От дроби к десятичной дроби и обратно? - PullRequest
5 голосов
/ 16 марта 2009

Можно ли хранить дробь типа 3/6 в некоторой переменной? Когда я пытаюсь это сделать, он сохраняет только цифры до /. Я знаю, что могу использовать 2 переменные и разделить их, но ввод осуществляется из одного текстового поля. Это вообще возможно?

Я хочу сделать это, потому что мне нужно вычислить дроби до десятичных коэффициентов.

Бонусный вопрос;) - Есть ли простой способ вычислить десятичное значение до дроби? Спасибо ..

Ответы [ 5 ]

5 голосов
/ 16 марта 2009

Короче говоря, нет верного способа извлечь исходную дробь из десятичной дроби.

Пример: взять 5/10

вы получите 0,5

сейчас 0,5 также переводит обратно в 1/2, 2/4, 3/6 и т. Д.

Лучше всего хранить каждое целое число отдельно и выполнять вычисления позже.

3 голосов
/ 16 марта 2009

Метод, как уже было сказано, состоит в том, чтобы хранить числитель и знаменатель так, как вы можете написать это на бумаге.

для 'C' используйте

Многофункциональная арифметическая библиотека GNU

ищите «рациональный» в документах.

3 голосов
/ 16 марта 2009

Лучше всего реализовать класс дроби (или класс рациональных чисел). Обычно это заняло бы числитель и знаменатель и могло бы обеспечить двойное, и делать основную математику с другими объектами дроби Он также должен уметь анализировать и форматировать дроби.

Рациональная арифметика с кодом Розетты выглядит как нечто хорошее для начала.

3 голосов
/ 16 марта 2009

Боюсь, у вас нет простых ответов на этот вопрос. Для создания дроби вам придется разделить текстовое поле на '/', преобразовать две половины в double s и разделить их. Что касается преобразования его обратно в дробь, вам придется взломать учебник по математике и разобраться с ним. (Хуже того, двойное число на самом деле не является точным - вы можете подумать, что оно содержит 0,1, но на самом деле оно имеет значение 0,09999999999999998726 или что-то в этом роде, поэтому вам придется выбрать точность и пойти на это, или написать какую-то дробь класс, основанный на паре целых чисел.)

1 голос
/ 16 марта 2009

Есть ли простой способ вычислить десятичное значение в дроби?

Если вы ограничите свои десятичные значения определенным количеством десятичных знаков, вы можете создать справочную таблицу.

0.3333, 1/3
0.6666, 2/3
0.0625, 1/16
0.1250, 1/8
0.2500, 1/4
0.5000, 1/2
0.7500, 3/4
etc...

Так что, если пользователь вводит 0,5, вы дополняете его нулями, пока не получите 4 десятичных знака. Затем вы использовали бы таблицу поиска, чтобы вернуть «1/2». Таблица поиска, вероятно, должна быть своего рода словарем.

Оценивать тоже не сложно. Например, если пользователь ввел значение 0,0624, вы можете легко выбрать значение в таблице, ближайшее к этому десятичному числу. В этом случае будет возвращено «1/16.»

Не позволяйте вводу / вводу конечного набора десятичных / дробных пар вас пугать (это действительно не так уж и много в зависимости от выбранной вами точности).

Если ничего не поможет, поиск в Google покажет библиотеку, которая сделает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...