Попробуйте вместо этого:
string result = string.Format("${0:#,##0.00}", d);
Если ваш двойник представляет валюту, вы должны использовать:
string result = string.Format(CultureInfo.GetCultureInfo("en-US"), "{0:c}", d);
Обратите внимание, что если вы пропустите CultureInfo.InvariantCulture
, на некоторых компьютерах он может отображаться с использованием чего-то отличного от $
. Например, на моем компьютере string.Format("{0:c}", d)
дает 2,00 kr
, что может быть не тем, что вы хотели.
В вашем примере вам вообще не нужно использовать string.Format
. Вы можете использовать это вместо:
string s = d.ToString("c", CultureInfo.GetCultureInfo("en-US"));
Помимо того, что он яснее и лаконичнее, он также имеет преимущество в том, что избегает бокса. Конечно, если ваша строка формата более сложная, чем в вашем примере, то имеет смысл использовать string.Format
.
И в качестве последнего замечания я бы рекомендовал не использовать двойные числа для хранения валюты. Десятичный тип, вероятно, более уместен.