Поскольку вы не показываете свой собственный код, я просто представлю алгоритм без кода.
Моя основная идея состоит в том, чтобы умножить данное число на степень основания, чтобы получить интересующие нас цифры.слева от точки.Затем мы округляем число до ближайшего целого числа.Затем используйте код, который вам уже нужен, чтобы получить нега-четвертичное или подобное представление в виде строки.Наконец, вставьте точку в нужном месте в строке, которая по сути делит мощность базы.При необходимости округлите последнюю цифру.
Первый шаг - умножить на четную мощность базы.Отрицательно-базовое представление означает, что если мы умножим нега-четвертичное число, имеющее основание -4
, на (-4)^2
, а именно 16
, то его нега-четвертичное представление будет иметь те же цифры, что и исходное число.Разница лишь в том, что точка была перемещена на два пробела.Поэтому, если вы хотите, чтобы в вашем ответе было prec
количество цифр, округлите prec
до четного числа (само по себе, если prec
четное, prec+1
, если оно нечетное).Затем умножьте данное число на (-4)^roundedprec
.Если prec
было нечетным, вы можете усечь или округлить последнюю цифру, чтобы получить желаемое количество цифр.