C# TryParse方法返回不同的结果
我试图检查字符串是否有数字,是否使用“TryParse”方法。对于字符串“101”中的数字,返回“True”;对于字符串“20170119000004”中的数字,返回“False” 我的代码:C# TryParse方法返回不同的结果,c#,C#,我试图检查字符串是否有数字,是否使用“TryParse”方法。对于字符串“101”中的数字,返回“True”;对于字符串“20170119000004”中的数字,返回“False” 我的代码: int n; string maf_seq_no=""; maf_seq_no = "101"; Console.WriteLine(int.TryParse(maf_seq_no, out n)); //OUTPUT True maf_seq_no = "20170119000004"; Console
int n;
string maf_seq_no="";
maf_seq_no = "101";
Console.WriteLine(int.TryParse(maf_seq_no, out n)); //OUTPUT True
maf_seq_no = "20170119000004";
Console.WriteLine(int.TryParse(maf_seq_no, out n)); //OUTPUT False
知道为什么数字的输出不同吗?
int.TryParse
返回false
用于“20170119000004”
,因为该值高于int.MaxValue
例如,您可以尝试
long.TryParse
。int.TryParse
为“20170119000004”
返回false
,因为该值高于int.MaxValue
您可以尝试使用
long。例如,TryParse
。20170119000004
不是有效的int值。最大可能的int值是2147483647
。这就是它返回false的原因
如果要检查字符串是否完全由数字组成,可以使用:
var isOnlyNumbers = RegEx.IsMatch(maf_seq_no, "^[0-9]+$");
20170119000004
不是有效的int值。最大可能的int值是2147483647
。这就是它返回false的原因
如果要检查字符串是否完全由数字组成,可以使用:
var isOnlyNumbers = RegEx.IsMatch(maf_seq_no, "^[0-9]+$");
它返回
false
,因为20170119000004
对于int
(int32)来说太大。一个int
是2147483647
,或231-1
改用a,其最大值为9223372036854775807
或
263-1.它返回
false
,因为20170119000004
对于int
(int32)来说太大了。一个int
是2147483647
,或231-1
改用a,其最大值为9223372036854775807
或
263-1.如果您只想检查
字符串是否仅由数字组成,可以执行以下操作:
string str = "12345";
bool isAllDigits = str.All(char.IsDigit);
int
的最大值可以是2147483647(但它甚至可以是负数!),long
9223372036854775807(但它甚至可以是负数!)。有一些无符号版本可以包含更大的数字,但最大位数仍然是“固定”的 如果只想检查字符串
是否仅由数字组成,可以执行以下操作:
string str = "12345";
bool isAllDigits = str.All(char.IsDigit);
int
的最大值可以是2147483647(但它甚至可以是负数!),long
9223372036854775807(但它甚至可以是负数!)。有一些无符号版本可以包含更大的数字,但最大位数仍然是“固定”的 n不能保存该值,因为它是int.buffer溢出?在第二个测试用例中,尝试输出long
,而不是int
。如果字符串可能包含任意数量的数字,那么检查它是不正确的(即使使用long而不是int)。作为推论,并非所有的数字序列都是有效的int
,或者有效的long
:-),所以变量“n”必须是“long”对的。否。它将从int.TryParse
返回相同的结果maf_seq_no
必须等于或小于intMaxValue
n不能保存该值,因为它是int.buffer溢出?在第二个测试用例中,尝试输出long
,而不是int
。如果字符串可能包含任意数量的数字,那么检查它是不正确的(即使使用long而不是int)。作为推论,并非所有的数字序列都是有效的int
,或者有效的long
:-),所以变量“n”必须是“long”对的。否。它将从int.TryParse
返回相同的结果maf_seq_no
必须等于或小于intMaxValue
高于int.MaxValue
高于int.MaxValue
谢谢你的回答,这会返回正确的输出谢谢你的回答,这会返回正确的输出