RPM*_*984 11 c# string double type-conversion
尽量不要在这里重复自己(干嘛),帮助我.=)
我有一个双倍代表评级/ 5.
可能的值是:
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.
Run Code Online (Sandbox Code Playgroud)
我想将其转换为没有小数位的字符串.
所以价值观会变成:
"0", "05", "1", "15", "2", "25", "3", "35", "4", "45", "5".
Run Code Online (Sandbox Code Playgroud)
我为什么要这样做?因为我正在尝试根据值动态创建链接:
string link = "http://somewhere.com/images/rating_{0}.gif";
return string.Format(link, "15");
Run Code Online (Sandbox Code Playgroud)
可能的值在别处处理/验证,换句话说,我可以100%确定该值将始终是我提到的值之一.
有任何想法吗?我可以在.ToString()方法中使用一些特殊格式?还是我坚持使用非DRY切换声明?或者我可以厚颜无耻地做一个decimal.ToString().Replace(".","")?
编辑:
哇,谢谢你们的所有答案!=)
大多数答案都是正确的,所以我会保持开放一天左右,并选出最多的答案.
无论如何,我最终创建了一个简单的扩展方法:
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);
}
Run Code Online (Sandbox Code Playgroud)
猜猜是"KISS"和"DRY"的案例.在这种情况下,扩展方法的语法糖保持DRY,并且实际的单行实现满足KISS.
十进制分隔符取决于当前的文化偏好:
d.Replace(
System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator,
String.Empty)
Run Code Online (Sandbox Code Playgroud)
将取代'.'或','与""