gpt4 book ai didi

c# - 为什么 NumberStyles.AllowThousands 对 int.Parse 有效,但对 double.Parse 无效?

转载 作者:太空狗 更新时间:2023-10-29 20:02:29 25 4
gpt4 key购买 nike

为了解析表示数字的字符串,用逗号将千位数字与其余数字分开,我试过

int tmp1 = int.Parse("1,234", NumberStyles.AllowThousands);
double tmp2 = double.Parse("1,000.01", NumberStyles.AllowThousands);

第一个语句执行没有问题,而第二个语句失败并出现异常:

An unhandled exception of type 'System.FormatException' occurred inmscorlib.dll

Additional information: Input string was not in a correct format.

为什么不都成功?

最佳答案

你应该通过 AllowDecimalPoint , Float , 或 Number样式(后两种样式只是几种数字样式的组合,其中包括 AllowDecimalPoint 标志):

double.Parse("1,000.01", NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint)

当您为解析方法提供一些数字样式时,您指定了可以出现在字符串中的元素的精确样式。未包含的样式视为不允许。用于解析 double 值的默认标志组合(当您未明确指定样式时)是 NumberStyles.FloatNumberStyles.AllowThousands 标志。

考虑你的第一个解析整数的例子 - 你没有传递 AllowLeadingSign 标志。因此下面的代码会抛出一个异常:

int.Parse("-1,234", NumberStyles.AllowThousands)

对于这样的数字,应该添加AllowLeadingSign标志:

int.Parse("-1,234", NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign)

关于c# - 为什么 NumberStyles.AllowThousands 对 int.Parse 有效,但对 double.Parse 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43240566/

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