@ Брент: Мой комментарий выше может быть (частью) вашего ответа (я читаю проблему как запоздалую мысль - извинения).Проблема csprogrammer001 в том, что он (а) не оценил последствия повышения от двойного до четверного.Между двойными 5.099 (... ~ 12digits ...) 0 и двойными 5.099 (... ~ 12digits ...) 1 лежат еще ~ 999 ... 9 (17 десятичных 9с) действительных квадраторских значений.
Чтобы приблизиться, они должны сделать что-то вроде Quad.Parse ("5.09900000000000000000000000000000") или явно обрезать вашу строку, чтобы она соответствовала их значащим цифрам.
Если при вставке двойного значения в квад (неназначенные биты ноль) получается почти как черт 5.09900000000000019895196601282 (8052), то это то, что вы должны отрендерить (не менее 30 десятичных цифр на основе .Net по умолчанию 15),Единственное, что вы могли бы подумать, чтобы «исправить» пример, это «угадать намерение» с помощью чего-то вроде double-> round-> string-> pad-> quad, и вы НЕ хотите этого делать.
Параметры форматирования для вашей ToString () были бы хорошим дополнением.