繁体   English   中英

Decimal.Parse和Double.Parse System.FormatException不同的行为

[英]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

Decimal.Parse

使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM