如何在 c # 中将数据从 string 转换为 long

如何在 C # 中将数据从 string 转换为 long?

我有数据

String strValue[i] ="1100.25";

现在我要插进去

long l1;
342649 次浏览

如果你想得到那个数字的整数部分,你必须首先将它转换成一个浮点数,然后转换成长数。

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

你可以使用 Math类四舍五入的数字,你喜欢,或只是截断..。

Http://msdn.microsoft.com/en-us/library/system.convert.aspx

l1 = Convert.ToInt64(strValue)

虽然你给出的例子不是一个整数,所以我不知道为什么你想要它作为一个长。

long l1 = Convert.ToInt64(strValue);

应该可以了。

也可以使用 Int64.TryParse方法进行。如果它们是任何字符串值,但没有生成错误,则返回’0’。

Int64 l1;


Int64.TryParse(strValue, out l1);

Long 在内部表示为 System.Int64,它是一个64位有符号整数。 您获取的“1100.25”值实际上是十进制而不是整数,因此它不能转换为 long。

你可使用:

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

转换成十进制值

你不能直接把它转换成长的,因为小数点,我认为你应该把它转换成小数,然后转换成长的东西像这样:

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

希望这个能帮上忙!

也可以使用 long.TryParselong.Parse

long l1;
l1 = long.Parse("1100.25");
//or
long.TryParse("1100.25", 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;
}

还可以进一步改进:

  • 表现良好
  • 使验证更加严格,因为它目前并不关心第一个小数后面的字符是否是数字
  • 指定四舍五入行为作为转换函数的参数