124

我正在转换一个像“41.00027357629127”这样的字符串,我正在使用;

Convert.ToSingle("41.00027357629127");

或者

float.Parse("41.00027357629127");

这些方法返回4.10002732E+15

当我转换为浮点数时,我想要“41.00027357629127”。这个字符串应该是一样的...

4

7 回答 7

253

您的线程的语言环境设置为小数点为“,”而不是“.”的语言环境。

尝试使用这个:

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);

但是请注意,浮点数不能容纳那么多位的精度。您必须使用 double 或 Decimal 来执行此操作。

于 2012-06-26T08:01:07.957 回答
27

首先,它只是您在调试器中看到的数字的表示。实际float值是近似准确的(尽可能多)。

注意:在处理浮点数与字符串时,始终使用 CultureInfo信息。

float.Parse("41.00027357629127",
      System.Globalization.CultureInfo.InvariantCulture);

这只是一个例子;为您的案例选择合适的文化。

于 2012-06-26T07:40:47.500 回答
25

您可以使用以下内容:

float asd = (float) Convert.ToDouble("41.00027357629127");
于 2014-11-25T15:05:42.927 回答
9

利用Convert.ToDouble("41.00027357629127");

Convert.ToDouble文件

于 2012-06-26T07:39:37.470 回答
4

float的精度为 7 位。如果要保留全部,则需要使用保留 15-16 位的double类型。关于格式化,请查看有关格式化双精度的帖子。而且您需要担心C# 中的小数分隔符

于 2012-06-26T07:39:14.020 回答
0

你可以double.Parse("41.00027357629127");

于 2012-06-26T07:38:16.170 回答
-2

您可以使用双精度而不是浮点解析来获得更高的精度值。

于 2012-06-26T07:41:07.667 回答