2016-05-23 3 views
1

у меня есть некоторые двойные значения, например:String.Format двойные, без сепаратора

24.1 
0.5 
9.0 

Я хочу, чтобы отформатировать эти значения, так что я получаю номер перед точкой и три цифры после запятой. Это число не должно быть отделено точкой так было бы в конечном итоге, как это:

24100 
0500 
9000 

Мое текущее решение, которое мне не нравится, как это выглядит:

public override String ToString() 
{ 
    String formatparameter = "{0:0.000}"; 
    String stringFix = String.Format(formatparameter, m_Fix); 
    stringFix = stringFix.Replace(".", ""); 
    stringFix =stringFix.Replace(",", ""); 
    return stringFix 
} 

Есть String.Format " formatParameter ", который делает string.Replace избыточным/устаревшим?

EDIT:

Для осветления Ищу параметра формата. Решения, предоставленные до сих пор, очень хороши в отношении их выхода, но я надеюсь найти параметр.

+4

Разве вы не можете просто умножить его на 1000? –

+0

0.5 * 1000 = 500 – Bongo

+1

и 500 - это то же значение (численно) как 0500. Это просто вопрос форматирования - см. [Эта скрипка] (https://dotnetfiddle.net/TkzSmj) или один из похожих ответов. –

ответ

3

Вы можете использовать

return string.Format("{0}{1:000}", (int)m_Fix, (m_Fix*1000)%1000); 

или с C# 6

return $"{(int)m_Fix}{(m_Fix*1000)%1000:000}" 

тест с вашими тремя значениями и получил этот результат:

24100 
0500 
9000 
+0

Спасибо за ваш ответ, и да, это правильно, если вы посмотрите на результат, но я ищу «formatParameter». – Bongo

+1

@Bongo Я не думаю, что есть параметр формата, который сокращает десятичную точку. –

+0

Я оставлю этот вопрос открытым в течение нескольких часов. Если вы правы, я проверю это как правильный ответ, потому что он самый правильный, и он был первым – Bongo

4

Изменено
Вот что я 'd do:

public static String ToString(double d) 
{ 
    return (d * 1000.0).ToString("0000"); 
} 

Console.WriteLine(ToString(24.1)); 
Console.WriteLine(ToString(0.5)); 
Console.WriteLine(ToString(9.0)); 

Выход:

24100 
0500 
9000 
+3

4 '0' достаточно, вам не нужно 5 ([скрипка] (https: // dotnetfiddle. net/ZaLdny)) – Sayse

+0

@Sayse, обновленный –

+1

Ваш первый ответ был верным, у него просто было от одного до большого числа ноль в формате, гораздо яснее, чем вы его обновили. – Sayse

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

  • Нет связанных вопросов^_^