How could I convert data from string to long in c#

How could i convert data from string to long in C#?

I have data

String strValue[i] ="1100.25"; 

now i want it in

long l1; 
4

8 Answers

If you want to get the integer part of that number you must first convert it to a floating number then cast to long.

long l1 = (long)Convert.ToDouble("1100.25"); 

You can use Math class to round up the number as you like, or just truncate...

5

You can also use long.TryParse and long.Parse.

long l1; l1 = long.Parse("1100.25"); //or long.TryParse("1100.25", out l1); 

l1 = Convert.ToInt64(strValue)

Though the example you gave isn't an integer, so I'm not sure why you want it as a long.

long l1 = Convert.ToInt64(strValue); 

That should do it.

1

You won't be able to convert it directly to long because of the decimal point i think you should convert it into decimal and then convert it into long something like this:

String strValue[i] = "1100.25"; long l1 = Convert.ToInt64(Convert.ToDecimal(strValue)); 

hope this helps!

long is internally represented as System.Int64 which is a 64-bit signed integer. The value you have taken "1100.25" is actually decimal and not integer hence it can not be converted to long.

You can use:

String strValue = "1100.25"; decimal lValue = Convert.ToDecimal(strValue); 

to convert it to decimal value

You can also do using Int64.TryParse Method. It will return '0' if their is any string value but did not generate an error.

Int64 l1; Int64.TryParse(strValue, out l1); 

You can create your own conversion function:

 static long ToLong(string lNumber) { if (string.IsNullOrEmpty(lNumber)) throw new Exception("Not a number!"); char[] chars = lNumber.ToCharArray(); long result = 0; bool isNegative = lNumber[0] == '-'; if (isNegative && lNumber.Length == 1) throw new Exception("- Is not a number!"); for (int i = (isNegative ? 1:0); i < lNumber.Length; i++) { if (!Char.IsDigit(chars[i])) { if (chars[i] == '.' && i < lNumber.Length - 1 && Char.IsDigit(chars[i+1])) { var firstDigit = chars[i + 1] - 48; return (isNegative ? -1L:1L) * (result + ((firstDigit < 5) ? 0L : 1L)); } throw new InvalidCastException($" {lNumber} is not a valid number!"); } result = result * 10 + ((long)chars[i] - 48L); } return (isNegative ? -1L:1L) * result; } 

It can be improved further:

  • performance wise
  • make the validation stricter in the sense that it currently doesn't care if characters after first decimal aren't digits
  • specify rounding behavior as parameter for conversion function. it currently does rounding

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like