将字符串强制保留两位小数。

23

我有一个重复项,显示一个双精度浮点数。偶尔会出现像这样带有3个小数位的数字1165.833。我试图通过使用string.format方法将其强制转换为两个小数位,但它仍然保持不变:

<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>

有什么想法吗?

5个回答

65

String 并没有实现 IFormattable 接口。如果要使用格式化,需要移除 .ToString() 方法,这样你就不会传入一个字符串。

<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange"))%>
看得更清楚一些,运行以下代码:

要看得更清楚一些,运行以下代码:

Console.WriteLine(string.Format("{0:f2}", "123.888"));
Console.WriteLine(string.Format("{0:f2}", 123.888));

输出的内容

123.888
123.89

请告诉我为什么第二个例子的结果是 123.89,而 string.format 取整到了 123.89?我想要返回 123.88。在这个链接中,MSDN 的示例不正确,为什么会这样!!?https://msdn.microsoft.com/en-us/library/75ks3aby%28v=vs.110%29.aspx - Alireza

15

您可以使用:

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

2
在C# 6+中,您还可以使用插值字符串。例如:$"{myDoubleVar:f2}" - Dr. Hilarius

8

3
尽量不要在Eval方法的输出上调用ToString() - 数字格式化字符串无法格式化字符串。

0

这也添加了货币符号,这不是要求的一部分。 - Dr. Hilarius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接