I am querying a database field that returns a money value, I am assigning this to a string but it is adding extra 00 on the end.
e.g. Query returns 30.00
You can use string format codes in your ToString call.
MartGriff,
My best advice would be to convert it to a double using the SqlMoney type. From there, you can output it however you would like!
Here's an example:
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");
For more formatting options, check out the MSDN:
http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx
Best of luck, I hope this helps.
The Money data type has a precision of 4 decimal places. You'll need to either specify the format in the ToString() arguments or you can round off the value before converting to a string.
If you use .ToString() you're not getting any rounding as far as I know. I think you just lose the digits.
If you round, you're not just chopping off digits. Here's a sample for rounding (untested code):
string value = Math.Round(ReturnValue, 2).ToString();
string value = (Convert.ToDecimal(ReturnValue)).ToString("c");
c is for currency p for percentage. There is a list of other letters you can use.
Try this:
yourValueHere.ToString("0.00")
Do you want your string formatted using a currency character?
If so...
decimal m = 3.4;
string s = string.Format("{0:c}", m);
// s will be £3.40, $3.40, etc depending on your locale settings