Я использую библиотеку gmp, пишу программу на C, например
len = mpz_sizeinbase(res, 10);
, когда res = 9, это дает мне 2. Так что я проверяю руководство, и оно говорит:
size_t mpz_sizeinbase (mpz_t op, int base)
Возвращает размер операции, измеренный в количестве цифр в данной базе.base может варьироваться от 2 до 62. Знак op игнорируется, используется только абсолютное значение.Результат будет либо точным, либо 1 слишком большим.Если основание является степенью 2, результат всегда точен.Если op равен нулю, возвращаемое значение всегда равно 1.
Я просто хочу знать, почему эта функция конструируется с такой утечкой?Почему НЕ МОЖЕТ быть точным?
Некоторые вопросы, которые я нашел похожими:
GMP mpz_sizeinbase возвращает размер 2 для 9 в базе 10
Количество цифр GMP целое число