我的代码如下:
private string Do2Decimal(string value)
{
return String.Format("{0:0.##}", value);
}
这里我将字符串值传递为 16.32222 我所知道的是,上面的代码应该将我的值格式化为16.32 但它显示的输出值为 16.32222 。
我在这里做错了什么?
更新:
我有字符串格式的值:" 16.32222"。
对不起忘了以前提过。
答案 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));
在点之后获得两位数值。