С помощью бинарного поиска легко найти целое число, даже если оно может быть сколь угодно большим: сначала угадайте порядок величины, затем продолжайте делить интервал. Этот ответ описывает, как найти произвольное рациональное число .
Установив сцену, мой вопрос аналогичен: как мы можем угадать число с плавающей запятой IEEE 754? Предположим, что это не NaN, но все остальное — честная игра. Для каждого предположения вашей программе будет сказано, является ли рассматриваемое число большим, равным или меньшим. Минимизируйте количество предположений, необходимых в худшем случае.
(Это не домашнее задание. Хотя я мог бы сделать его одним, если окажется, что у него есть интересный ответ, который не просто «преодолеть числовые трудности с плавающей запятой до смерти с большим количеством специальных случаев».)
Редактировать: если бы я лучше искал, я мог бы найти ответ --- но это работает, только если вы уже знайте, что реинтерпретация как int
работает (с некоторыми оговорками). Так что оставим это. Спасибо Гарольду за отличный ответ!