C# 科学记数法.NET中的错误?

C# 科学记数法.NET中的错误?,c#,.net,scientific-notation,C#,.net,Scientific Notation,是的,我知道这很难相信-虫子在.NET?但在命令行应用程序中运行以下代码: decimal 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.W

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

decimal 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); 十进制x; x=decimal.Parse(“3.E-2”,numberstyle.Float); 控制台写入线(x); x=decimal.Parse(“5.72e9”,NumberStyles.Float); 控制台写入线(x); x=十进制.Parse(“3.E−2“,数字类型。浮动); 控制台写入线(x); 我在最后一次分析中遇到异常。说:

System.FormatException : Input string was not in a correct format. System.FormatException:输入字符串的格式不正确。 第一次和最后一次解析的值完全相同。在针对.NET 3.5和4编译的两台不同x64计算机上进行测试


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

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


在第三个符号中,你有一个“更长”的符号,因此它不知道该怎么处理它。因此,您需要检查它,并用标准减号替换它。标准免责声明适用(并且再次得到证明):在尖叫“框架错误!框架错误!”之前,始终假设您的代码是错误的。我想知道您是如何键入该数字破折号或en破折号的:/这是U2012数字破折号,是的,您是如何键入的!?从客户输入文件复制并粘贴。在我的VS字体下,两个字符看起来都一样-就在这里我可以看出区别:)天哪,你的名字很适合你,BugFinder:-)很好!非常好的发现-我已经有其他人在发布之前查看过了。;)最后一个破折号似乎是Unicode减号(或者它是一个en破折号?)@BoltClock它是en破折号或figure破折号它不是破折号,它是负号。我的意思是正确的,而不是大多数人习惯在键盘上使用的连字符-减号组合。看起来比普通的要好得多,但即使是声称完全支持unicode的应用程序也无法识别它。