Попытка не повторять себя (быть сухим) здесь, помогите мне. =)
У меня есть double, который представляет рейтинг /5.
Возможные значения:
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.
Я хочу преобразовать это в строку без десятичного места.
Значения будут следующими:
"0", "05", "1", "15", "2", "25", "3", "35", "4", "45", "5".
Почему я это делаю? Потому что я пытаюсь динамически создать ссылку на основе значения:
string link = "http://somewhere.com/images/rating_{0}.gif";
return string.Format(link, "15");
Возможные значения обрабатываются/проверяются в другом месте, другими словами, я могу быть на 100% уверенным, что значение всегда будет одним из тех, что я упомянул.
Любые идеи? Какой-то специальный формат, который я могу использовать в методе .ToString()
? Или я застрял с оператором switch без DRY? Или я могу нахально сделать decimal.ToString().Replace(".","")
?
EDIT:
Whoah, спасибо за ответы, ребята! =)
Большинство ответов верны, поэтому я оставлю это открытым на день или около того и выберем ответ с наибольшим количеством голосов.
В любом случае, я создал простой метод расширения:
public static string ToRatingImageLink(this decimal value)
{
string imageLinkFormat = "http://somewhere.com/images/rating_{0}.gif";
return string.Format(imageLinkFormat, value.ToString().Replace(".0", string.Empty).Replace(".", string.Empty);
}
Угадайте, что это был случай "KISS" и "DRY". В этом случае синтаксический сахар методов расширения сохранил его СУХОЙ, а реальная однострочная реализация удовлетворяет KISS.