I have a string "246246.246" that I'd like to pass to the IConvertable interface, ToInt16, ToInt32, ToIn64. What is the best way to parse a string with decimal places to an integer?
This is a solution, but is there a better solution?
string value = "34690.42724";
Convert.ToInt64(Convert.ToDouble(value));
To do this discounting rounding you could do:
If you need to round you could replace
Math.Floor
withMath.Round
.Edit: Since you mentioned in a comment that you'll be rounding:
If you have to worry about localization/globalization then as @xls said you should apply a CultureInfo in the conversions.
Edit 2: Alternative method using a string function (not terribly elegant IMO - maybe it could be elegantized with a predicate function):
If you are really worry about accuracy but not about speed then decimal type would be better.
Assuming this string comes from user input, you probably want to catch number styling. Run it through a reusable function like so...
You should not have to Round the value as ToInt64(double) returns the rounded version already