как получить целую часть действительного числа, которая является положительной, используя только основную арифметику - PullRequest
0 голосов
/ 17 ноября 2018

Это вопрос для школы: заново изобретать колесо как обычно.

Мне разрешено использовать базовую арифметику +, -, *, / и сравнение, но яМне явно не разрешено использовать приведение.

Метод должен быть эффективным, поэтому я подумал о том, чтобы умножить переменную на 2, пока она не станет больше, а затем выполнить дихомитический поиск между степенями 2, который содержит действительное число Iхочу извлечь целочисленную часть.

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

Я не могу найти решение этой проблемы ...

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете следовать своей идее умножения на два, чтобы превзойти значение, а затем дихомитический поиск (он же бинарный поиск), чтобы получить желаемое целое число. Однако, поскольку вы не можете сравнивать число с плавающей запятой с целым числом, начните с двух значений , числа с плавающей запятой 1.0 и целого числа 1. Сделайте все свои умножения и сравнения со значением с плавающей запятой, затем на каждом шаге независимо от того, что вы делаете со значением с плавающей запятой, вы также делаете с целочисленным значением. Таким образом, в любой момент ваше значение с плавающей запятой и целочисленное значение равны, и вы используете значение с плавающей запятой для всех сравнений с данным значением.

Таким образом, если задано значение 3.1416, вы начнете с начальных значений угадывания 1.0 и 1. 1.0 меньше 3.1416, поэтому вы удваиваете оба предположения и получаете 2.0 и 2. Число с плавающей точкой 2.0 все еще меньше, чем 3.1416, поэтому вы снова удваиваете обе догадки и получаете 4.0 и 4. Ваше предположение с плавающей точкой 4.0 наконец слишком велико, поэтому вы используете бинарный поиск и пробуете 3.0 и 3. Предположение о плавучести низкое. Тем не менее, ваше целочисленное предположение 3 находится всего в одном от вашего предыдущего целочисленного предположения 4, так что все готово. Таким образом, конечный целочисленный результат равен 3.

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