我正在转换像“41.00027357629127”这样的字符串,我正在使用;
Convert.ToSingle("41.00027357629127");
或
float.Parse("41.00027357629127");
这些方法返回 4.10002732E + 15 。
当我转换为浮动时,我想要“41.00027357629127”。这个字符串应该是相同的......
答案 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");
答案 4 :(得分:4)
float的精确度为7位数。如果你想保留全部,你需要使用保持15-16位数的double类型。关于格式化,请查看有关formatting doubles的帖子。你需要担心about decimal separators in C#。
答案 5 :(得分:1)
你可以double.Parse("41.00027357629127");
答案 6 :(得分:-1)
您可以使用double而不是float来解析以获得更高的精度值。