在C#中将字符串转换为浮点数

时间:2012-06-26 07:35:01

标签: c# .net string floating-point type-conversion

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

Convert.ToSingle("41.00027357629127");

float.Parse("41.00027357629127");

这些方法返回 4.10002732E + 15

当我转换为浮动时,我想要“41.00027357629127”。这个字符串应该是相同的......

7 个答案:

答案 0 :(得分:194)

您的线程的区域设置设置为小数点为“,”而不是“。”的区域。

尝试使用:

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

但请注意,浮点数不能容纳那么多精度数字。你必须使用double或Decimal才能这样做。

答案 1 :(得分:21)

首先,它只是您在调试器中看到的float数字的演示文稿 real 值近似精确(尽可能多)。

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

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

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

答案 2 :(得分:13)

您可以使用以下内容:

float asd = (float) Convert.ToDouble("41.00027357629127");

答案 3 :(得分:7)

使用Convert.ToDouble("41.00027357629127");

Convert.ToDouble documentation

答案 4 :(得分:4)

float的精确度为7位数。如果你想保留全部,你需要使用保持15-16位数的double类型。关于格式化,请查看有关formatting doubles的帖子。你需要担心about decimal separators in C#

答案 5 :(得分:1)

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

答案 6 :(得分:-1)

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