Вопрос

Я должен преобразовать double в 10 цифр + 4 десятичных знака.

так что позвольте сказать:У меня двойной 999,56.Я должен получить 00000009995600 -> без запятой!

То, что у меня есть, это:

string.format("{0:0000000000.0000}", значение) но то, что я получаю, это:0000000999,5600

итак, что я могу сделать сейчас, это найти запятую и удалить ее, но я хотел бы знать, существует ли другой "чистый" способ форматирования в этом конкретном формате?

Спасибо!

Это было полезно?

Решение

Поскольку ты сказал, что хочешь избежать String.Replace:

// avoid whacked out cultures
double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = (10000 * value).ToString("00000000000000", info));
Console.WriteLine(s); // displays "00000009995600"

Но на самом деле, в этом нет ничего плохого:

double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = value.ToString("0000000000.0000", info).Replace(
    info.NumberFormat.NumberDecimalSeparator,
    String.Empty)
Console.WriteLine(s); // displays "00000009995600"

Другие советы

string.Format("{0:00000000000000}", value * 10000)

Что ж, я буду использовать метод Replace(), поскольку, я думаю, другого "простого" способа не существует:

Вот мое решение, которое почти совпадает с ответом Джейсона:

string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Console.WriteLine(String.Format(fromt, testvalue).Replace(sep, ""));

Спасибо!

double val = 12345.6789;
return val.ToString().Split('.')[0];

Если вы не хотите (или не можете) размножаться, то это может сработать:

string newValue = value.Replace(",", "");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top