Почему является ToString () округлением моего двойного значения?

Как я препятствую тому, чтобы мое двойное значение было округлено при преобразовании в строку? Я попробовал обоих Convert.ToString и ToString() с тем же результатом.

Например, мое двойное может посмотреть что-то как 77.987654321, и два строковых преобразования преобразовывают в к 77.98765. Я должен сохранить точность значения, как.

19
задан Peter Mortensen 4 April 2010 в 15:46
поделиться

4 ответа

По умолчанию метод .ToString () двойной возвращает 15 цифр точности. Если вы хотите полные 17 цифр, что двойное значение удерживает внутренне, вам необходимо пройти спецификатор формата «G17» в метод.

String s = value.ToString("G17");

Получены из MSDN Docs :

по умолчанию только возвращаемое значение только Содержит 15 цифр точности Хотя максимум 17 цифр поддерживается внутри. Если значение Этот экземпляр превышает 15 Цифры, ToString возвращает Положительнаяinfinitysymbol или Отрицатьfinitysymbol вместо Ожидаемый номер. Если вам требуется больше точность, укажите формат с Спецификация формата «G17», которая всегда возвращает 17 цифр точности, или «R», который возвращает 15 цифр, если номер можно представить с этим точность или 17 цифр, если число можно представить только с максимумом точность.

24
ответ дан 30 November 2019 в 02:56
поделиться

Нет гарантий, но попробуйте ToString («R»).

0
ответ дан 30 November 2019 в 02:56
поделиться

Попробуйте что-то вроде

myDouble.ToString("R")

см. Также R ") Спецификатор формата :

Спецификатор формата Wrund-Trip (« R ») гарантирует, что числовое значение, которое преобразуется в строку, будет проанализирован обратно в то же числовое значение.

14
ответ дан 30 November 2019 в 02:56
поделиться

DoubleConverter Jon Skeet [1133341] - это метод TexactStString () , который вернет точное значение двойного в виде строки.

http://www.yoda.arachsys.com/csharp/doubleconverter.cs

5
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: