gpt4 book ai didi

c# - 为什么 int.TryParse 不能解析数字分组(但 double.TryParse 可以)?

转载 作者:太空狗 更新时间:2023-10-30 00:31:49 26 4
gpt4 key购买 nike

在 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

???

最佳答案

您必须指定允许的 NumberStyles,在将字符串解析回数字时会考虑到这一点。

Determines the styles permitted in numeric string arguments that are passed to the Parse and TryParse methods of the integral and floating-point numeric types.

这将返回 true 并将预期的数字存储在 i2 中:

bool result1 = int.TryParse(si1,
NumberStyles.AllowThousands, CultureInfo.CurrentCulture.NumberFormat, out i2);

您可能还想看看其他 NumberStyles 选项。例如,NumberStyles.Number 允许千位以及小数点、空格等。


int.TryParse(如果未指定)的默认值为 NumberStyles.Integer,它只允许前导符号以及前导和尾随空格。

double.TryParse 的默认值是 NumberStyles.Float| NumberStyles.AllowThousands,它允许前导符号和空格,但也允许千位、指数和小数点。

关于c# - 为什么 int.TryParse 不能解析数字分组(但 double.TryParse 可以)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com