C# Int.TryParse()始终返回false
我有以下代码C# Int.TryParse()始终返回false,c#,tryparse,int32,C#,Tryparse,Int32,我有以下代码 int varOut; int.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660 这里txt1.Text是JavaScript生成的随机16位数字,是一个整数。但上述代码始终返回false,即varOut值始终为零 这里我做错了什么?int(32位整数)的限制是-2147483648到2147483647。你的号码太大了 对于大的整数数字,如您的案例,请尝试使用long.TryPar
int varOut;
int.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660
这里txt1.Text是JavaScript生成的随机16位数字,是一个整数。但上述代码始终返回false,即varOut值始终为零
这里我做错了什么?int(
32位
整数)的限制是-2147483648
到2147483647
。你的号码太大了
对于大的整数
数字,如您的案例,请尝试使用long.TryParse
(或Int64.TryParse
,因为Int64
在C#中是long
)。long
编号的限制范围为-9.2e18至9.2e18
*
long varOut;
long.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660
对于您的号码应该足够了,大约只有4.2e15
(4286656181793660
)
可选地,如果您想要数字(包含分数,更高精度),您可能需要考虑使用<代码>十进制.TyPARSE < /C>。p> 它是
128位
数据类型,范围为-7.9e28至7.9e28
,有效位精度为28-29
最适合任何涉及货币的计算
并且,作为完成回答的最后一句话,使用双精度编码可能是不安全的-不要使用它。虽然double
具有非常高的±5.0×10e范围−324到±1.7×10e308
,其精度仅为15-16位左右()
在这种情况下,您的数字由16位数字组成,位于双精度的边界。因此,在某些情况下,您可能会得到错误的结果。只有当您确信您的数字精度不超过15位时,您才可以安全地使用它
*-9223372036854775808
到9223372036854775807
int
只是int32
的缩写;它是一个32位(有符号)整数,意味着它不能容纳大于20亿左右的数字。您的数字大于该值,因此不是有效的int
值。看起来您使用的值可能超出了您正在使用的类型的容量。。。看
将其存储为long而不是int。
您应该使用long
而不是int
。您的号码太大,无法使用long.TryParse()进行int
您的数字太大,无法转换为整数
也可以使用int64.tryparse使用MaxLength
属性来限制位数,用户输入的位数不能超过int32
TextBox.MaxLength=9
基本上,我只需要Int32值,因为我正在一个只接受32位整数值的函数中使用它。也许我需要生成不大于2147483647的随机数。因此,您已经阅读了MSDN,其中说“false…表示小于MinValue或大于MaxValue的数字”。你能澄清一下你需要帮助的那部分陈述吗?
double varOut;
double.TryParse(txt1.Text, out varOut); // Not a good idea... since the input number is 16-digit Here txt1.Text = 4286656181793660
TextBox.MaxLength=9