输入字符串格式不正确
本文关键字:不正确 格式 字符串 输入 | 更新日期: 2023-09-27 18:08:50
我的代码中出现以下错误:"输入字符串格式不正确"。
Convert.ToDecimal(tdprice.InnerText).ToString("##.###");
代码块中:
protected void rptConsole_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlTableCell tdprice = e.Item.FindControl("price") as HtmlTableCell;
tdprice.InnerText = Convert.ToDecimal(tdprice.InnerText).ToString("##.###");
}
}
要全面了解我正在尝试做的事情,请访问以下链接在中继器中选择项目或列并更改数据
你根本不需要使用OnItemDataBound事件。
你可以在ASP标记中这样做:
...
<td align="center"><%# String.Format("{0:F2}", Eval("[price]")) %></td>
...
或者如果你想使用。net货币格式:
...
<td align="center"><%# String.Format("{0:C}", Eval("[price]")) %></td>
...
查看这篇文章了解更多关于。net标准数字格式字符串的具体信息:http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
Convert.ToDecimal(string)
方法显式地使用Decimal.Parse(string, CurrentCulture)
。下面是它的实现过程;
public static decimal ToDecimal(String value)
{
if (value == null)
return 0m;
return Decimal.Parse(value, CultureInfo.CurrentCulture);
}
和Decimal.Parse(string, CurrentCulture)
方法实现为;
public static Decimal Parse(String s, IFormatProvider provider)
{
return Number.ParseDecimal(s, NumberStyles.Number, NumberFormatInfo.GetInstance(provider));
}
可以看到,它使用NumberStyles.Number
枚举。这是一个复合样式,可以包含;
- 前后空白(
Char.IsWhiteSpace
返回true
) - 前后标志(
CurrentCulture
、PositiveSign
和NegativeSign
) - 十进制分隔符(
CurrentCulture
的NumberDecimalSeparator
属性) - 千位分隔符(
CurrentCulture
的NumberGroupSeparator
属性)
既然你说你的方法与5.33432
值失败,很可能你的CurrentCulture
的NumberDecimalSeparator
属性不是.
您可以使用.Clone()
方法创建基于CurrentCulture
的副本CultureInfo
,并将此属性设置为.