I tried to use the decimal.parse as described at : http://msdn.microsoft.com/en-us/library/cafs243z(v=vs.110).aspx
So i copied from this page the following example:
string value;
decimal number;
value = "1.62345e-02";
try
{
number = Decimal.Parse(value);
Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
Console.WriteLine("Unable to parse '{0}'.", value);
}
And i got a FormatException, Do you have an idea why it's happened?
thanks, eyal
shree.pat18's answer is of course right. But I want to explain this question a little bit more if you let me..
Let's look at how Decimal.ToParse(string)
method implemented;
public static Decimal Parse(String s)
{
return Number.ParseDecimal(s, NumberStyles.Number, NumberFormatInfo.CurrentInfo);
}
As you can see, this method uses NumberStyles.Number
by default. It is a composite number style and it's implemented like;
Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |
AllowDecimalPoint | AllowThousands,
That means your string can have one of;
Char.IsWhiteSpace
returns true
)PositiveSign
and NegativeSign
)NumberDecimalSeparator
NumberGroupSeparator
Since NumberStyles.Number
has AllowDecimalPoint
, it fits .
in your string but this style doesn't have AllowExponent
that's why it can't parse e-02
in your string.
That's why you need to use Decimal.Parse Method (String, NumberStyles)
overload since you can specify NumberStyles
yourself.
Try this:
using System.Globalization;
using System.Text;
....
number = Decimal.Parse(value, NumberStyles.AllowExponent|NumberStyles.AllowDecimalPoint);
In order to parse a number in exponential format, you need to set the appropriate flags from NumberStyles Enumeration
as described here.
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