我该如何在C#中将数据从字符串转换为长整型?
我有数据
String strValue[i] ="1100.25";
现在我想要它里面
long l1;
我该如何在C#中将数据从字符串转换为长整型?
我有数据
String strValue[i] ="1100.25";
现在我想要它里面
long l1;
如果您想获取该数字的整数部分,必须先将其转换为浮点数,然后强制转换为长整型。
long l1 = (long)Convert.ToDouble("1100.25");
您可以使用 Math
类来按照您想要的方式四舍五入或向上取整数字,或者只是截断...
.
视为十进制分隔符(CultureInfo.InvariantCulture
可以工作)。 - Etienne de Marteldouble
可以安全表示的最大整数是 2^53
,而你的整数比它还要大,所以当转换为 long
时会得到一些奇怪的结果。 - Etienne de Martel您还可以使用long.TryParse
和long.Parse
。
long l1;
l1 = long.Parse("1100.25");
//or
long.TryParse("1100.25", out l1);
http://msdn.microsoft.com/zh-cn/library/system.convert.aspx
l1 = Convert.ToInt64(strValue)
尽管你提供的示例不是整数,所以我不确定为什么你想要将其转换为 long。
long l1 = Convert.ToInt64(strValue);
那应该可以了。
由于存在小数点,您无法直接将其转换为长整型。我认为您应该先将其转换为十进制,然后再将其转换为长整型,类似于以下代码:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
long在内部表示为System.Int64,它是一个64位有符号整数。
你输入的值"1100.25"实际上是十进制数而不是整数,因此无法转换为long。
你可以使用:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(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;
}
它可以进一步改进: