C # форматировать двойной с ToString, и отображать нулевое значение - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь найти лучший способ отобразить двойное число в C # следующим образом:

  • 7.345 должно отображаться как «73»
  • 100.0 должно отображаться как «100»
  • 0,234 Шоуд отображается как «02»

Входное значение составляет от 0,00 до 10,00.Мне нужно преобразовать его в имя файла.Например, в случае значения 5,4234 я должен отобразить «img54.jpg».

Проблема в том, что я не могу понять, как отобразить нулевые значения в ToString() двойных значений.

Я попробовал это:

  • (10 * 7.345).ToString("##.") => правильно
  • (10 * 10.00).ToString("##.") => правильно
  • (10 * 0.000).ToString("##.") => FAIL, не отображаетсячто угодно.
  • (10 * 0.000).ToString("D2") => FAIL, D не допускается в двойных числах

Я, конечно, могу сделать несколько сложнейших построений строк, но если возможно использовать ToStringэто было бы намного лучше, конечно.

Кто-нибудь идея?

Ответы [ 7 ]

3 голосов
/ 06 декабря 2010

Что вы хотите, чтобы 0,00 отображалось как? "00"?

В этом случае вы можете попробовать использовать формат ToString("00.").

1 голос
/ 06 декабря 2010

Можете ли вы просто проверить, равно ли двойное число 0? и если это так, установите img00.jpg в свое имя файла. Это кажется намного проще, чем переделывать ваш алгоритм.

0 голосов
/ 06 декабря 2010
double val = 7.345;
string result = val.ToString("0.#").Replace(".","");
0 голосов
/ 06 декабря 2010
return ((int)(input * 10.00)).ToString().SubString(0, 2);
0 голосов
/ 06 декабря 2010

Если у вас всегда есть номер ввода этого формата: #. ###

Вы можете умножить его на 1000, разделить на 100 и привести результат к целому числу.

7,345 * 1000 = 7345/100 = 73,45 => Convert.ToInt32 => 73

0,000 * 1000 = 0/100 = 0 => Convert.ToInt32 = 0


Или вы можете умножить на 10 и преобразовать в целое.

0 голосов
/ 06 декабря 2010

Вы можете просто преобразовать в int перед форматированием следующим образом: ((int) (10 * 7.345)). ToString ("D2")

0 голосов
/ 06 декабря 2010

Почему бы вам не преобразовать его в int?

int result = (int)(input * 10.00);
return result.ToString();
...