C #에서 데이터를 문자열에서 long으로 어떻게 변환 할 수 있습니까?
데이터가 있습니다
String strValue[i] ="1100.25";
이제 나는 그것을 원한다
long l1;
C #에서 데이터를 문자열에서 long으로 어떻게 변환 할 수 있습니까?
데이터가 있습니다
String strValue[i] ="1100.25";
이제 나는 그것을 원한다
long l1;
답변:
이 답변은 더 이상 작동하지 않으며 여기에 나열된 다른 답변 (아래 참조)보다 더 나은 것을 찾을 수 없습니다. 그들을 검토하고 찬성하십시오.
Convert.ToInt64("1100.25")
MSDN의 메서드 서명 :
public static long ToInt64(
string value
)
해당 숫자의 정수 부분을 얻으려면 먼저 부동 숫자로 변환 한 다음 long으로 캐스트해야합니다.
long l1 = (long)Convert.ToDouble("1100.25");
Math
클래스를 사용 하여 원하는대로 숫자를 반올림하거나 잘라낼 수 있습니다.
FormatException
당신이 지정된 입력에서 실행합니다.
long.TryParse
및 을 사용할 수도 있습니다 long.Parse
.
long l1;
l1 = long.Parse("1100.25");
//or
long.TryParse("1100.25", out l1);
http://msdn.microsoft.com/en-us/library/system.convert.aspx
l1 = Convert.ToInt64(strValue)
당신이 준 예제는 정수가 아니기 때문에 왜 그것을 길게 원하는지 잘 모르겠습니다.
Int64.TryParse
방법을 사용하여 할 수도 있습니다 . 문자열 값이지만 오류를 생성하지 않은 경우 '0'을 반환합니다.
Int64 l1;
Int64.TryParse(strValue, out l1);
자신 만의 변환 함수를 만들 수 있습니다.
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;
}
더 개선 할 수 있습니다.