如何将带指数的字符串转换为浮点数?

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 上绘制图形

如何在python中将23位浮点数从字符串转换为浮点数并返回?

如何将表示为字符串的数字转换为浮点数

如何将字符串转换为浮点数?

如何将字符串转换为浮点数? (温度转换器)

如何将时间字符串(M:SS)转换为浮点数