Я выполнил некоторые быстрые сравнительные тесты производительности, и для 100 000 операций составил в среднем более чем 10 выполнений, первый метод (Строковый Разработчик) берет почти половину времени второго (Формат строки).
Так, если это является нечастым, это не имеет значения. Но если это - общая операция, тогда можно хотеть использовать первый метод.
Если вы сохраняете значение (128-битное), используя максимально возможное собственное представление, которое может обрабатывать ваша архитектура (64-битное), у вас будут проблемы с обработкой промежуточных результатов деления (как вы уже обнаружили :) ).
Но вы всегда можете использовать МЕНЬШЕ представление. А как насчет ЧЕТЫРЕХ 32-битных чисел? Таким образом, вы можете использовать собственные 64-битные операции без проблем с переполнением.
Простую реализацию (в Delphi) можно найти здесь .