【问题标题】:Scientific Notation - bug in .NET?科学记数法 - .NET 中的错误?
【发布时间】:2011-06-08 11:09:28
【问题描述】:

是的,我知道这很难相信 - .NET 中的错误?但在命令行应用程序中运行此代码:

十进制 x; x = decimal.Parse("3.E-2", NumberStyles.Float); Console.WriteLine(x); x = decimal.Parse("5.72e9", NumberStyles.Float); Console.WriteLine(x); x = decimal.Parse("3.E−2", NumberStyles.Float); Console.WriteLine(x);

我在最后一次解析时遇到了异常。说:

System.FormatException :输入字符串的格式不正确。

第一次和最后一次解析的值完全相同。在针对 .NET 3.5 和 4 编译的两台不同 x64 机器上进行了测试。

知道发生了什么吗?有什么解决办法吗?

【问题讨论】:

  • 标准免责声明适用(并再次被证明):在尖叫“框架错误!框架错误!”之前,始终假设您的代码是错误的首先
  • 我想知道你是如何输入数字破折号或破折号的:/
  • 这是 U2012 Figure Dash ,是的,你是怎么输入的!?
  • 从客户输入文件中复制和粘贴。在我的 VS 字体下,两个字符看起来一样 - 只是在这里我可以发现不同之处:)

标签: c# .net scientific-notation


【解决方案1】:

第一个和第三个不完全相同。

在第三个你有一个“更长”的 - 标志,因此它不知道如何处理它。因此,您需要检查并用标准减号替换它

【讨论】:

  • Crikey,你的名字对你很有帮助,BugFinder :-) 很好!
  • 很好发现 - 在发布之前我已经让其他人看到了这个。 ;)
  • 最后一个破折号似乎是 Unicode 减号(或者它是一个破折号?)。
  • @BoltClock 它是破折号或数字破折号
  • 不是破折号,是减号。我的意思是正确的,而不是大多数人习惯在键盘上使用的连字符减号混合。看起来比普通的好很多,但即使是声称完全支持 unicode 的应用程序也无法识别它。
猜你喜欢
  • 2017-04-01
  • 1970-01-01
  • 2017-06-06
  • 2020-12-30
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多