What is the best way to take a string which can be empty or contain "1.2" for example, and convert it to an integer? int.TryParse
fails, of course, and I don't want to use float.TryParse
and then convert to int
.
Convert.ToDouble
(culture-dependent)You may using Convert.ToDouble
. But, beware! The below solution will work only when the number separator in the current culture's setting is a period character.
var a = (int)Convert.ToDouble("1.2");
Convert.ToDouble
(culture-independent)It's preferable to use IFormatProvider
and convert the number in an independent way from the current culture settings:
var a = (int)Convert.ToDouble("1.2", CultureInfo.InvariantCulture.NumberFormat);
Another way to accomplish this task is to use Split on parsed string:
var a = int.Parse("1.2".Split('.')[0]);
Or:
var a = int.Parse("1.2".Split('.').First());
IsNullOrEmpty
condition.NumberFormatInfo.NumberDecimalSeparator
property.Parse
, TryParse
or Convert
class wisely. Read more at:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With