2013-05-09 7 views
3

У меня есть эта double значение:String.Format (формат, doubleValue), точность потерял

var value = 52.30298270000003 

и когда я преобразовать его в string, она теряет свою точность:

var str = string.Format("{0} some text...", value); 
Console.WriteLine(str); // output: 52.3029827 

В число точность на моем double значение может быть изменено во время выполнения. Как я могу заставить метод string.Format использовать всю точность ?

ответ

6

Вы хотите использовать формат R спецификатор

С MSDN

Результат: строка, которая может туда-обратно с одинаковым номером.

При поддержке: Single, Double и BigInteger.

Спецификация точности: Игнорируется.

Дополнительная информация: The Round-trip ("R") Format Specifier.

String.Format("{0:R} some text...", value) 

даст вам

52.30298270000003 some text... 
+0

А, мне нужно больше практики в stackoverflow, вы, ребята, быстро :)! Хороший материал, приятель. –

3

Попробуйте это:

var value = 52.30298270000003; 

var str = string.Format("{0} some text...", value.ToString("R")); 
Console.WriteLine(str); // output: 52.3029827 

MSDN от documnetation имеет следующие сказать о ToString метода одиночном и парном разряде и с помощью ToString("R"):

По умолчанию возвращаемое значение содержит только 7 цифр точности , хотя внутренне поддерживается не более 9 цифр. Если значение этого экземпляра имеет более 7 цифр, ToString (String) возвращает PositiveInfinitySymbol или NegativeInfinitySymbol вместо ожидаемого числа . Если вам нужна более высокая точность, укажите формат с спецификацией формата «G9», которая всегда возвращает 9 цифр точности, или «R», которая возвращает 7 цифр, если число может быть , представленное с этой точностью или 9 цифрами, если номер может быть только представлен с максимальной точностью.

+1

Как может быть двойной? – leppie

+0

Что именно вы имеете в виду, когда говорите, что «двойник в основном один»? – LukeH

+0

Извините, я имел в виду float и single, а затем изменил его на double: | Отредактированный ответ не был настолько запутанным. – Maloric

Смежные вопросы