C#Currency to string

时间:2009-03-03 23:24:26

标签: c#

我正在查询返回货币值的数据库字段,我将其分配给字符串,但最后会添加额外的00.

e.g。查询返回30.00

我将此分配给字符串(string value = Convert.ToString(ReturnValue);) 但是当我输出它时,它显示为30.0000

你能告诉我哪里出错了,最好的办法是什么?

10 个答案:

答案 0 :(得分:13)

MartGriff,

我最好的建议是使用SqlMoney类型将其转换为double。从那里,您可以根据需要输出它!

以下是一个例子:

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

祝你好运,我希望这会有所帮助。

答案 1 :(得分:9)

您可以在ToString调用中使用string format codes

答案 2 :(得分: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

答案 3 :(得分:3)

我会使用像

这样的东西
string value = ReturnValue.ToString("0.00");

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

答案 4 :(得分:2)

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

我使用的方法是

fieldName.Text = decimalValue.ToString(" c");

效果很好。

答案 5 :(得分:1)

试试这个:

yourValueHere.ToString("0.00")

答案 6 :(得分:0)

在SQLServer中,货币数据类型相当于具有4位小数精度的小数。我认为当十进制转换为字符串时,这是精确的。最好的选择是在进行转换时始终使用格式字符串,例如“#,## 0.00”。

答案 7 :(得分:0)

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

如果使用.ToString(),据我所知,你没有得到任何舍入。我想你只是失去了数字。

如果你绕圈,你不只是砍掉数字。这是舍入的示例(未经测试的代码):

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

答案 8 :(得分:0)

我的建议是先将其转换为十进制。我会用类似的东西:

string value = (Convert.ToDecimal(ReturnValue)).ToString("0,0.00");

答案 9 :(得分:0)

string value = (Convert.ToDecimal(ReturnValue)).ToString("c");

c是货币 p为百分比。 您可以使用a list of other letters