如何智能安全地将Double转换为String?

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.

aba*_*hev 9

十进制分隔符取决于当前的文化偏好:

d.Replace(
    System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator,
    String.Empty)
Run Code Online (Sandbox Code Playgroud)

将取代'.'','""