У этой задачи нет простых и очевидных решений. Требуется особая обработка INF и NAN; по мере извлечения новых цифр из double растёт погрешность остатка; в наивных реализациях присутствует погрешность округления не в ту сторону; а попытка решить эту задачу грубой силой требует для работы кучу (heap) и много сложного кода, который с высокой вероятностью содержит ошибки.
( Обзор реализаций — гражданским не интересно )
( Обзор реализаций — гражданским не интересно )