为什么 AllowExponent 使 Decimal.Parse 无法解析正常数字?

Why does AllowExponent makes Decimal.Parse fail to parse normal numbers?

我试过这些

    Dim a = Decimal.Parse("0.00001", System.Globalization.NumberStyles.Any)
    Dim c = Decimal.Parse("0.00001")
    Dim cb = Decimal.Parse("0.00001", System.Globalization.NumberStyles.AllowExponent)

第一个代码有效。

第二行有效。

第三行不行

好像我不提numberstyles,numberstyles默认是什么东西。默认为什么?

它基本上允许解析普通数字 (".00001")。但是,如果将 System.Globalization.NumberStyles.AllowExponent 指定为参数,则该功能将关闭。

为什么会这样?

如果我们使用 Decimal.parse 的正常重载,没有附加参数,NumberStyles 的默认值是多少?

除了整数之外,您不会写出带有指数的数字。请参阅我上面的评论。

    Dim cb = Decimal.Parse("1e-5", System.Globalization.NumberStyles.AllowExponent)
    MessageBox.Show(cb.ToString)
    Dim ab = Decimal.Parse("1e-5", System.Globalization.NumberStyles.Any)
    MessageBox.Show(ab.ToString)

两个消息框都显示 .00001。

我只想根据 Parsing decimal in scientific notation

添加
System.Globalization.NumberStyles.AllowExponent

不允许输入小数。

可能是单位直觉的。

因此,

cb = Decimal.Parse("0.00001", System.Globalization.NumberStyles.AllowExponent)

会抛出错误,因为解析器无法解析 .

我不知道为什么要这样设计。那么我们将如何解析 4.5e10,例如。

您需要其他选项。 AllowExponent 似乎正是这样做的。允许指数,仅此而已。