Предисловие: Компиляторы могут реализовывать программные операции с плавающей запятой для процессоров, у которых нет аппаратного обеспечения с плавающей запятой, поэтому часто использование float
и double
в таких системах не является проблемой.
Я рекомендую используя стандартные базовые типы с плавающей запятой, если они поддерживаются вашим компилятором.
Можно ли получить десятичное число в качестве ввода от пользователя без использования типа данных с плавающей запятой / double?
Да. Ввод пользователя осуществляется с использованием символьных потоков. Вы можете читать входные данные в строку, не используя какой-либо тип чисел c.
И это число необходимо использовать для расчетов в дальнейшем.
Для выполнения вычислений вы сначала нужно решить, как бы вы хотели представить число. Существует несколько альтернатив аппаратной плавающей точке:
- Фиксированная точка: используйте целое число 100, например, для представления 0,0100.
- Программная плавающая точка: используйте одно целое число для представления мантиссы, другое целое число для представления показателя степени и логического значения для представления знака.
- Рациональные числа: используйте одно целое число для представления знаменателя, а другое - для представления знаменателя.
- Возможно, многие другие ...
Каждый из них имеет разные реализации для различных арифметических c операций.
Фиксированная точка является самой простой и, вероятно, наиболее эффективной, но имеет как малый диапазон, так и низкую точность вблизи нуля (ну, одинаковую точность для всех весь диапазон, но плохой по сравнению с плавающей точкой, которая имеет высокую точность около нуля и очень низкую точность вдали от нуля.
Программная плавающая точка позволяет потенциально воспроизводить поведение оборудования, следуя вездесущему стандарту IEEE-754.
Рациональные числа имеют проблемы с переполнением, а также с избыточными представлениями. Я не думаю, что они используются много, кроме как с произвольными целыми числами точности.
(root будет дробным числом)
Технически, большинство корней иррационально и, таким образом, не дробный. Но поскольку иррациональные числа не могут быть представлены компьютерами (кроме как в символьной форме c), лучшее, что мы можем достичь, это некоторое дробное число, близкое к фактическому root.