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

Meh*_*met 92 .net c# string floating-point type-conversion

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

Convert.ToSingle("41.00027357629127");
Run Code Online (Sandbox Code Playgroud)

要么

float.Parse("41.00027357629127");
Run Code Online (Sandbox Code Playgroud)

这些方法返回4.10002732E + 15.

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

Mat*_*son 211

您的线程的语言环境设置为小数标记为","而不是"."的区域设置.

试试这个:

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);
Run Code Online (Sandbox Code Playgroud)

但请注意,浮点数不能保持那么多精度数字.您必须使用double或Decimal才能这样做.

  • 不要忘记添加命名空间`使用System.Globalization;`来访问`CultureInfo` (32认同)

Tig*_*ran 23

首先,它只是您在调试器中看到的数字的表示float.的真正价值约为准确(就像它是可能的).

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

float.Parse("41.00027357629127",
      System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

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


小智 15

您可以使用以下内容:

float asd = (float) Convert.ToDouble("41.00027357629127");
Run Code Online (Sandbox Code Playgroud)

  • 请提供一些背景信息,说明为什么这是正确的答案. (3认同)

Ozg*_*gus 7

使用 Convert.ToDouble("41.00027357629127");

Convert.ToDouble 文件

  • 这不会将数据类型从 float 更改为 double 吗?OP想要浮动。 (2认同)