如何将带指数的字符串转换为浮点型?
我有以下字符串:“3.39112632978e+001”,我需要将其转换为浮点数。 WolframAlpha 说这个值的结果是 33.9112632978 显然我应该以某种方式得到,但我不知道如何得到。
Single.Parse("3.39112632978e+001") gives 3.39112624E+12
Double.Parse("3.39112632978e+001") gives 3391126329780.0
float.Parse("3.39112632978e+001") gives 3.39112624E+12
我应该怎么办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您遇到了本地化问题,其中
.
被解释为千位分隔符而不是小数分隔符。比如说,你在欧洲吗?试试这个:
输出:
请注意,如果我们将
.
替换为,
,那么我们会看到您正在经历的行为:输出:
这支持了我的信念,即您正在经历本地化问题。
You are experiencing a localization issue wherein the
.
is being interpreted as a thousands separator instead of as a decimal separator. Are you in, say, Europe?Try this:
Output:
Note that if we replace the
.
by a,
then we see the behavior that you are experiencing:Output:
This supports my belief that you are experiencing a localization issue.
我认为,该线程提示了您的问题: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65d(以及
System.Globalization. NumberStyles.Float
是这里的关键内容之一 - 它改变了.
的解释方式)I think, this thread gives hints to your question: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65d (and the
System.Globalization.NumberStyles.Float
is one of the key things here - it changes how the.
is interpreted)