我在字符串中有这个值
string FinalValue=" 0XXXXXXXXX";
我需要获取整数值。
但是当我将它转换成如下
时 custNUmber = int.Parse(FinalValue);
它表示对于int32,值太大或太小。 C#
当我使用长时,它会跳过第一个数字0。
答案 0 :(得分:6)
数学说07894204661 == 7894204661
这就是为什么结果long
总是 7894204661 ;如果您想在将long
转换回String
时恢复前导零(例如,为了在TextBox中显示它,打印到控制台等),您可以使用< EM>格式化:
String FinalValue=" 07894204661";
long custNUmber = long.Parse(FinalValue.Trim());
// 11 digits wanted; "07894204661" is the outcome
String value = custNUmber.ToString("D11");
P.S。仅int.MaxValue == 2147483647
;当您尝试将“07894204661”转换为int
时,这是原因。
答案 1 :(得分:2)
前导零根本不是整数的一部分。实际上0123==123
产生了真实。
所以你可以先将它转换为long来处理它是一个数值很小的情况(f.e.用于记录目的):
int custNUmber;
long l;
if(long.TryParse(FinalValue, out l))
{
if(l < int.MinValue || l > int.MaxValue)
{
// log
}
else
{
custNUmber = (int)l;
}
}
else
{
// not a number
}
答案 2 :(得分:0)
使用long是正确的做法。零不是数字的一部分所以它应该跳过它。我担心领先的空间。您可能需要在解析它之前将其修剪掉。
custNUmber = long.Parse(FinalValue.trim());