Как я могу преобразовать данные из строки в длинные в C #?
У меня есть данные
String strValue[i] ="1100.25";
теперь я хочу это в
long l1;
Как я могу преобразовать данные из строки в длинные в C #?
У меня есть данные
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)
Хотя приведенный вами пример не является целым числом, поэтому я не уверен, почему он вам нужен так долго.
Вы не сможете напрямую преобразовать его в long из-за десятичной точки, я думаю, вы должны преобразовать его в десятичную дробь, а затем преобразовать в long примерно так:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
надеюсь это поможет!
long внутренне представлен как System.Int64, который представляет собой 64-битное целое число со знаком. Взятое вами значение «1100,25» на самом деле является десятичным, а не целым числом, поэтому его нельзя преобразовать в длинное.
Ты можешь использовать:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
преобразовать его в десятичное значение
long 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;
}
Его можно улучшить дальше: