Вы можете следовать своей идее умножения на два, чтобы превзойти значение, а затем дихомитический поиск (он же бинарный поиск), чтобы получить желаемое целое число. Однако, поскольку вы не можете сравнивать число с плавающей запятой с целым числом, начните с двух значений , числа с плавающей запятой 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
.