2009-03-03 171 views
12

我正在查询返回货币值的数据库字段,我将其分配给一个字符串,但它在结尾处添加了额外的00。将C#货币转换为字符串

例如查询返回30.00

我给你这一个字符串(string value = Convert.ToString(ReturnValue);) 但是当我将它输出,它显示为30.0000

你能告诉我,我要去哪里错了,并以接近这一点的最好方法是什么?

+0

什么是从数据库中获取的变量的.NET类型(在转换为字符串之前)? – 2009-03-03 23:38:00

+0

OP可以使用字符串格式代码,这就是他们在那里。 – 2009-03-03 23:46:46

回答

1

试试这个:

yourValueHere.ToString("0.00") 
3

我会使用类似

string value = ReturnValue.ToString("0.00"); 

它使用一个接受格式字符串的ToString重载。 上述格式字符串“0.00”指定了两位小数。

6

你想要使用货币字符格式化你的字符串吗?

如果是这样......

decimal m = 3.4; 

string s = string.Format("{0:c}", m); 

// s will be £3.40, $3.40, etc depending on your locale settings 
0

在SQLServer的货币数据类型是精确小数点后4位小数的等价物。我会假设这是精度保存时小数转换为字符串。最好的选择是在转换时总是使用格式字符串,例如“#,## 0.00”。

0

Money数据类型的精度为4位小数。您需要在ToString()参数中指定格式,或者您可以在转换为字符串之前舍入值。

如果你使用.ToString(),你不会得到任何舍入,据我所知。我认为你只是输了数字。

如果你四舍五入,你不只是切断数字。这里有一个四舍五入(未经测试的代码)的例子:

string value = Math.Round(ReturnValue, 2).ToString(); 
12

MartGriff,

我最好的建议是使用SqlMoney类型将其转换为一个双。从那里,你可以输出它,但你想!

下面是一个例子:

System.Data.SqlTypes.SqlMoney ReturnValue; 

//Set your returnValue with your SQL statement 
ReturnValue = ExecuteMySqlStatement(); 

//Get the format you want 

//$30.00 
string currencyFormat = ReturnValue.ToDouble().ToString("c"); 

//30.00 
string otherFormat = ReturnValue.ToDouble().ToString("0.00"); 

更多格式选项,请查看MSDN:

http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx

祝你好运,我希望这有助于。

2

我目前正在开发一个使用VS 2013社区版的boatdock网络系统。我试图弄清楚如何将货币值输出到文本框中。

,我所用的是该方法

fieldName.Text = decimalValue.ToString( “C”);

它完美的作品。