C# 如何在Asp.net中将SqlDataReader字符串格式化为货币格式?
我像这样从数据库中检索值C# 如何在Asp.net中将SqlDataReader字符串格式化为货币格式?,c#,asp.net,string-formatting,C#,Asp.net,String Formatting,我像这样从数据库中检索值173557.0000。我想显示像1,73557.00 这是我试过的代码 Table1001Hour.Rows[i].Cells[0].Text = rd["hour"].ToString(); Table1001Hour.Rows[i].Cells[1].Text = string.Format("{0:C}", Convert.ToInt32(rd["salesCost"].ToString())); 但它会抛出一条错误消息 输入字符串的格式不正确 如果我不转换为字
173557.0000
。我想显示像1,73557.00
这是我试过的代码
Table1001Hour.Rows[i].Cells[0].Text = rd["hour"].ToString();
Table1001Hour.Rows[i].Cells[1].Text = string.Format("{0:C}", Convert.ToInt32(rd["salesCost"].ToString()));
但它会抛出一条错误消息
输入字符串的格式不正确
如果我不转换为字符串,它将显示与它相同的173557.0000
谢谢问题似乎在这里:
Convert.ToInt32(rd["salesCost"].ToString())
所以。。。不要那样做?从数据库返回的数据可能只是一个int
,因此:(int)rd[“salesCost”]
(或者,如果您不确定具体类型,Convert.ToInt32(rd[“salesCost”])
)应该可以。然后还可以使用重载来字符串;给你:
Table1001Hour.Rows[i].Cells[1].Text = ((int)rd["salesCost"]).ToString("C");
(尽管基于.0000
,但它可以是十进制
或双精度
——后者对于财务数据来说是一个非常糟糕的选择)
老实说,我认为让UI代码和DB代码直接接触是一个错误,但这可能就是我。如果是我,我会从数据库中填充一个对象模型,然后分别将对象模型写入UI。问题似乎在这里:
Convert.ToInt32(rd["salesCost"].ToString())
所以。。。不要那样做?从数据库返回的数据可能只是一个int
,因此:(int)rd[“salesCost”]
(或者,如果您不确定具体类型,Convert.ToInt32(rd[“salesCost”])
)应该可以。然后还可以使用重载来字符串;给你:
Table1001Hour.Rows[i].Cells[1].Text = ((int)rd["salesCost"]).ToString("C");
(尽管基于.0000
,但它可以是十进制
或双精度
——后者对于财务数据来说是一个非常糟糕的选择)
老实说,我认为让UI代码和DB代码直接接触是一个错误,但这可能就是我。如果是我,我会从数据库中填充一个对象模型,然后分别将对象模型写入UI。Convert.ToInt32(rd[“salesCost”].ToString())
why?Convert.ToInt32(rd[“salesCost”].ToString())
why?它是Sql Server中的货币数据类型。因此,当我检索数据时,它以这种格式显示1213.0000
。您的代码显示错误消息指定的强制转换无效
未转换为int或double。我现在该怎么办?@mohamedfaisal尝试decimal
,否则:找出它是什么-即找出什么rd[“salesCost”]。GetType()
返回我得到了输出。但结果类似于123235.75
。我想要1,23235.75
@mohamedfaisal,然后你需要将CultureInfo
传递到ToString()
-大概你想要印度文化;例如:var culture=CultureInfo.GetCultureInfo(“en-IN”)代码>,var s=(1234567.0M).ToString(“C”,文化)代码>给出<代码>₹ 12,34567.00
它是Sql Server中的货币数据类型。因此,当我检索数据时,它以这种格式显示1213.0000
。您的代码显示错误消息指定的强制转换无效
未转换为int或double。我现在该怎么办?@mohamedfaisal尝试decimal
,否则:找出它是什么-即找出什么rd[“salesCost”]。GetType()
返回我得到了输出。但结果类似于123235.75
。我想要1,23235.75
@mohamedfaisal,然后你需要将CultureInfo
传递到ToString()
-大概你想要印度文化;例如:var culture=CultureInfo.GetCultureInfo(“en-IN”)代码>,var s=(1234567.0M).ToString(“C”,文化)代码>给出<代码>₹ 12,34567.00