Как преобразовать double в строку без разрешения до 10 (E-05)
double value = 0.000099999999833333343; string text = value.ToString(); Console.WriteLine(text); // 9,99999998333333E-05
Я бы хотел, чтобы текст строки был 0.000099999999833333343 (или почти это, я не занимаюсь ракетной наукой 🙂
Я пробовал следующие варианты
Console.WriteLine(value.ToString()); // 9,99999998333333E-05 Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05 Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330 Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330
Выполнение tostring N20 или формата F20 кажется самым близким к тому, что я хочу, но в итоге у меня много конечных нhive, есть ли разумный способ избежать этого? Я бы хотел как можно ближе к двойному представлению 0.000099999999833333343
Используйте String.Format () с спецификатором формата . Я думаю, вы хотите {0: F20} или около того.
string formatted = String.Format("{0:F20}", value);
Вам не нужен string.Format()
. Просто поместите правильную строку формата в существующий .ToString()
. Что-то вроде «N» должно делать.
Как насчет
Convert.ToDecimal(doubleValue).ToString()
Используйте string.Format
с соответствующим спецификатором формата.
В этом блоге есть много примеров: http://blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx