long.Parse() C#

15,449

Solution 1

give this a go:

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);

It may well be because you are declaring flags you may need to declair all possible flags that will be hit. I've just confirmed this code as working in a test project using your given string value in the question. Let me know if it meets your requirements. When declaring multiple flags in a single parameter use | instead of &

edit: http://msdn.microsoft.com/en-us/library/cc138362.aspx Find an explination of the different bitwise operators under the "Enumeration Types as Bit Flags" heading (That was harder to find than i thought.)

Solution 2

I would use TryParse instead of Parse, in order to avoid exceptions, i.e.:

long xi;
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi))
    {
        // OK, use xi
    }
    else
    {
        // not valid string, xi is 0
    }
Share:
15,449
ViV
Author by

ViV

I'm a software development enthusiast ...

Updated on October 02, 2022

Comments

  • ViV
    ViV over 1 year

    How would I convert a string, say "-100,100", to long in C#.

    I currently have a line of code which is

    long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);
    

    but this breaks when x is "a negative number".

    My approach:

    long xi = long.Parse("-100,253,1", 
    System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);
    

    was wrong, as it broke.

  • Skintkingle
    Skintkingle about 12 years
    Slight typo on your "Parse" should be "TryParse", otherwise better answer. Shame I didnt feel the need to point out TryParse to him.