Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Int.TryParse()始终返回false_C#_Tryparse_Int32 - Fatal编程技术网

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