2010-02-26 47 views
4

当我从sql server到vb.net代码的钱领域,我总是得到1.0000而不是1.00。如何将此转换为1.00在vb.net?vb.net货币显示有四个零而不是两个

TD = New HtmlTableCell 

If Not SqlDR("Price") Is DBNull.Value Then 
    TD.InnerHtml = SqlDR("Price") 
Else 
    TD.InnerHtml = "0.00" 
End If 

SQLDR是我的SQL数据读取器

+1

告诉我们你正在使用的代码,所以我们可以告诉你如何解决它。 – 2010-02-26 23:16:45

+0

刚刚编辑的问题 – unire 2010-02-26 23:27:25

回答

2

这是因为SQL Server存储与4位小数的MONEY领域。要用2看到它,请使用String.Format方法。

String.Format("{0:c}", 10) ''result: $10.00 

String.Format("{0:N2}", 10) ''result: 10.00 

看到这些网页更多的方式来格式化你的号码

+0

@Gabriel McAdams:SQL Server中的小数位数与输出上显示的小数位数无关。如果需要,可以用更多或更少的小数位来显示它。重要的是SQL Server中的MONEY类型在被引入到.NET空间时被转换成的类型,即使如此,该类型可容纳多少个小数位无关紧要,因为可以在*显示中始终添加或删除小数位*。 – casperOne 2010-02-26 23:38:36

+0

@Casper:我完全同意。 – 2010-02-26 23:57:32

+0

那么为什么在你的答案中提到这个事实? – casperOne 2010-02-27 01:18:53

1

你需要对数据进行格式化,当你将它输出:

myMoney.ToString("0.00"); 
1

您确定您没有将显示屏的值与实际值的值混淆吗?

1.0000和1.00是相同的值。

如果要在将值转换为字符串时只显示一定数量的位置,则应查看Custom Numeric Format Strings section in the MSDN documentation以确定要传递给Decimal,Double,Single结构上的ToString方法的格式字符串,或者String类的静态Format方法。