String.Format无法正常工作

时间:2014-04-28 15:14:06

标签: c# asp.net

我的代码如下:

private string Do2Decimal(string value)
{
    return String.Format("{0:0.##}", value);
}

这里我将字符串值传递为 16.32222 我所知道的是,上面的代码应该将我的值格式化为16.32 但它显示的输出值为 16.32222

我在这里做错了什么?

更新: 我有字符串格式的值:" 16.32222"。
对不起忘了以前提过。

2 个答案:

答案 0 :(得分:18)

因为你传递一个字符串值。格式化适用于浮点数/小数。只需根据您的要求将数字解析为十进制/双精度类型:

String.Format("{0:0.##}", decimal.Parse(value));

您还可以使用decimal.TryParse (或TryParse)系列方法进行更安全的解析。您还可以修改方法以接收decimal / double类型参数,然后应用格式。它将传达一个更好的意图,IMO。

如果您的字符串.NumberDecimalSeparator并且您的文化不支持.作为NumberDecimalSeparator,那么您可以在解析时传递CultureInfo.InvariantCulture

string value = "16.322222";
string formattedString = String.Format("{0:0.##}", decimal.Parse(value, CultureInfo.InvariantCulture));

答案 1 :(得分:-2)

试试这个

String.Format("{0:0.00}", decimal.Parse(value));

在点之后获得两位数值。