I am querying a data base field that returns a money value, I am assigning this to a string but it is adding extra 00 on the end
e.g.
Returns 30.00 I assign this to a string (string value = Convert.ToString(ReturnValue);) but when I output this is showing as 30.0000
Can you advice me where im going wrong and the best way to approch this.
-
You can use string format codes in your ToString call.
-
Try this:
yourValueHere.ToString("0.00") -
I'd use something like
string value = ReturnValue.ToString("0.00");This uses the ToString overload that accepts a format string. The above format string "0.00" specifies two decimal places.
-
Do you want your string formatted using a currency character?
If so...
decimal m = 3.4; string s = string.Format("{0:c}"; // s will be £3.40, $3.40, etc depending on your locale settings -
In SQLServer a money data type is the equivalent of a decimal with 4 decimal places of precision. I would assume this is precision is conserved when the decimal is converted to a string. The best option would be to always use a format string eg "#,##0.00" when doing the conversion.
-
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(); -
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.
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.