如何将带指数的字符串转换为浮点数?
Posted
技术标签:
【中文标题】如何将带指数的字符串转换为浮点数?【英文标题】:How to convert string with exponent to float? 【发布时间】:2010-02-10 15:39:56 【问题描述】:我有以下字符串:“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
我该怎么办?
【问题讨论】:
你当前的 Windows 本地化设置是什么(我得到 33. 从那个双重解析,但是当我有一个,
而不是 .
时,我得到你得到的 - 这尖叫 CultureInfo
问题:))
【参考方案1】:
您遇到了本地化问题,其中.
被解释为千位分隔符而不是小数分隔符。你在欧洲吗?
试试这个:
float f = Single.Parse("3.39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(f);
输出:
33.91126
请注意,如果我们将 .
替换为 ,
,那么我们会看到您遇到的行为:
float g = Single.Parse("3,39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(g);
输出:
3.391126E+12
这支持了我的观点,即您遇到了本地化问题。
【讨论】:
【参考方案2】:我认为,这个帖子暗示了你的问题:http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65d(System.Globalization.NumberStyles.Float
是这里的关键之一 - 它改变了.
的解释方式)
【讨论】:
以上是关于如何将带指数的字符串转换为浮点数?的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法将字符串转换为浮点数:在 python 上绘制图形