2009-12-10 2 views
3

Я должен преобразовать double to 10 digit + 4 decimal.Формат double без десятичной точки

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

Что у меня есть:

String.Format ("{0: 0000000000,0000}", значение), но то, что я получаю: 0000000999,5600

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

Спасибо!

ответ

4

Так как вы сказали, что вы хотите избежать 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" 
+0

Спасибо! Я сделал то же самое несколько минут назад, так как больше ничего не нашел! Я также использовал CulterInfo, но не вызывал GetCulterInfo(). Вот что я сделал: string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator; Console.WriteLine (String.Format (fromt, testvalue) .Replace (sep, "")); Спасибо! – Gohlool

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

Ну, это было ясно для меня тоже, но проблема в том, что я понятия не имею о ценности, которую я оживаю! Также может быть только 1.898 или xx.x или xxxxx.xxx или что угодно! – Gohlool

+0

Итак? Ты это пробовал? – Stu

-2

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

string newValue = value.Replace(",", ""); 
0

Ну, я буду использовать Заменить() метод, так как я предполагаю, что нет никакой другой «простой» способ:

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

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

Спасибо!

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

Я пытаюсь выполнить код в java, не разрешаю split ('.'), Я могу использовать вот так: "3232.122" .split (".") [0]; – iCrazybest

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