我正在查询返回货币值的数据库字段,我将其分配给字符串,但最后会添加额外的00.
e.g。查询返回30.00
我将此分配给字符串(string value = Convert.ToString(ReturnValue);
)
但是当我输出它时,它显示为30.0000
你能告诉我哪里出错了,最好的办法是什么?
答案 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。