1

我有以下字符串:“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

我该怎么办?

4

2 回答 2

3

我认为,该线程为您的问题提供了提示:http: //social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65d(这System.Globalization.NumberStyles.Float是关键之一这里的东西 - 它改变了.解释的方式)

于 2010-02-10T15:48:30.743 回答
3

您遇到了本地化问题,其中.被解释为千位分隔符而不是小数分隔符。你在欧洲吗?

试试这个:

float f = Single.Parse("3.39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(f);

输出:

33.91126

请注意,如果我们用.a替换,,那么我们会看到您遇到的行为:

float g = Single.Parse("3,39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(g);

输出:

3.391126E+12

这支持了我的信念,即您遇到了本地化问题。

于 2010-02-10T15:55:30.780 回答