![](/img/trans.png)
[英]Why is decimal.Parse() slower than (decimal)double.Parse()?
[英]Decimal.Parse and Double.Parse System.FormatException Different behavior
我不明白为什么在使用decimal.Parse
而不是double.Parse
时必须指定NumberStyles.Float
我可以:
var tmp = double.Parse("1e-2");
但不是:
var tmp1 = decimal.Parse("1e-2");
因为抛出了System.FormatException
(输入字符串的格式不正确)
var tmp1 = decimal.Parse("1e-2", System.Globalization.NumberStyles.Float);
有人可以告诉我这种行为是否有充分的理由
它只是表现得很正常。 从Double.Parse
:
使用NumberStyles.Float和NumberStyles.AllowThousands标志的组合来解释s参数。
请注意, NumberStyles.Float
包含NumberStyles.AllowExponent
。
使用NumberStyles.Number样式解释参数s。
NumberStyles.Number
不包括NumberStyles.AllowExponent
。
我无法重现您的异常堆栈跟踪,这些跟踪跟踪似乎显示了相同的调用在工作之后就失败了:
Decimal.Parse("1e-2")
对我总是失败 Decimal.Parse("1e-2", NumberStyles.Float)
始终对我Decimal.Parse("1e-2", NumberStyles.Float)
Double.Parse("1e-2")
总是对我Double.Parse("1e-2")
Double.Parse("1e-2", NumberStyles.Float)
总是对我Double.Parse("1e-2", NumberStyles.Float)
至于为什么“默认”编号样式两者之间的不同-我怀疑这是因为double
值通常在科学预测,其中基于指数的表示是共同使用,但decimal
值通常都没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.