Преобразование double в строку дает неожиданный вывод - PullRequest
1 голос
/ 27 ноября 2011

у меня есть,

double d = 0.005;
d = d/100;
string str = Convert.ToString(d);

output of str = 5E-05

Но мне нужен вывод как 0,00005 При преобразовании в строку 0.00005 становится 5E-05.

Как я могу решить это?

Ответы [ 3 ]

1 голос
/ 27 ноября 2011

Вы хотите указать формат для преобразования двойного в строку.Double.ToString не позволяет вам сделать это (используется научная запись), поэтому вместо него следует использовать String.Format.

Вот ваш обновленный код:

string str = String.Format("{0:0.#####}", 0.00005);

На самом деле Double.ToString фактически использует String.Format под капотом.См. Эту ссылку для получения дополнительной информации: Документы MSDN о Double.ToString

Дополнительные примеры String.Format см. По следующей ссылке: Примеры использования String.Format

1 голос
/ 27 ноября 2011

Вам нужен IFormatProvider:

http://www.csharp -examples.net / iformatprovider-numbers /
http://msdn.microsoft.com/en-us/library/7tdhaxxa.aspx

РЕДАКТИРОВАТЬ: Приведенный выше плакат даетвам больше подробностей.

using System;

namespace test1{
    class MainClass {
        public static void Main (string[] args)     {
            double d = 0.005;
            d = d/100;
            string str = String.Format("{0:0.#####}",d);
            Console.WriteLine ("The double converted to String:  "+str);
        }
    }
}

Это должно скомпилировать и показать, что вы хотите.

Это не может быть более ясным, чем это

Редактировать: Для более конкретных примеровсмотрите здесь: `

http://www.csharp -examples.net / string-format-double /

`

0 голосов
/ 27 ноября 2011

Я нашел решение:

 string str = d.ToString("F99").TrimEnd("0".ToCharArray());

Работает нормально.Но что именно это делает, я не знаю.Это работает для динамического двойного значения.

Спасибо за вас обоих, кто ответил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...