Правильно ли форматировать double как строку в C #? - PullRequest
2 голосов
/ 21 января 2011

Я хочу распечатать строковое представление типа double без потери точности, используя ToString() Когда я пытаюсь отформатировать его как строку, я получаю следующее:

double i = 101535479557522.5; 
i.ToString(); //displays 101535479557523

Как мне это сделать в C #?

Ответы [ 2 ]

9 голосов
/ 21 января 2011

Если вы хотите, чтобы он был точно таким же, вы должны использовать i.ToString("r") («r» для получения туда-обратно).Вы можете прочитать о различных числовых форматах на MSDN .

5 голосов
/ 21 января 2011

Вы бежите в пределы точности Double.Начиная с документов :

Помните, что число с плавающей запятой может приближаться только к десятичному числу, и что точность числа с плавающей запятой определяет, насколько точно это число приблизительнодесятичное число.По умолчанию значение Double содержит 15 десятичных цифр точности, хотя внутренне поддерживается максимум 17 цифр.

Если вам нужна большая точность - и, в частности, поддержание десятичного представления - вам следует обратить внимание на использование типа decimal.

...