Як я можу перетворити дані з рядка в довгий в 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)
Хоча приклад, який ви подали, не є цілим числом, тому я не впевнений, чому ви хочете його довго.
Ви не зможете перетворити його безпосередньо в довгий через десяткову точку, я думаю, ви повинні перетворити його в десятковий, а потім перетворити в довгий щось подібне:
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;
}
Його можна вдосконалити ще: