use*_*190 4 c# format locale numbers
在C#中,为什么int.TryParse不能解析分号(但double.TryParse可以)?
int i1 = 13579;
string si1 = i1.ToString("N0"); //becomes 13,579
int i2 = 0;
bool result1 = int.TryParse(si1, out i2); //gets false and 0
double d1 = 24680.0;
string sd1 = d1.ToString("N0"); //becomes 24,680
double d2 = 0;
bool result2 = double.TryParse(sd1, out d2); //gets true and 24680.0
Run Code Online (Sandbox Code Playgroud)
???
您必须指定允许NumberStyles
,在将字符串解析回数字时会考虑到这一点.
确定传递给整数和浮点数字类型的Parse和TryParse方法的数字字符串参数中允许的样式.
这将返回true
并存储预期的数字i2
:
bool result1 = int.TryParse(si1,
NumberStyles.AllowThousands, CultureInfo.CurrentCulture.NumberFormat, out i2);
Run Code Online (Sandbox Code Playgroud)
您可能还想看看其他NumberStyles
选项.例如,NumberStyles.Number
允许数千,小数点,空格等.
int.TryParse
(如果未指定)的默认值为NumberStyles.Integer
,仅允许前导符号,前导和尾随空格.
double.TryParse
is 的默认值NumberStyles.Float| NumberStyles.AllowThousands
,允许前导符号和空格,以及数千,指数和小数点.