将String解析为Float返回错误的结果

时间:2019-01-07 02:08:23

标签: c# string floating-point

我尝试在C#中将字符串转换为Float。我尝试了在Converting String To Float in C#中找到的所有变体,但无论如何我都得到了错误的结果。

我尝试过

float.Parse((string)parameter);
float.Parse((string)parameter, CultureInfo.InvariantCulture);
float.Parse((string)parameter, CultureInfo.InvariantCulture.NumberFormat);
(float)Convert.ToDouble((string)parameter);

以及所有这些不带(string)强制转换的变体。我没有得到编译器错误,但结果是错误的。当我使用Math.sin(convertedParameter)时,对于3.14159,我得到的结果是2,535182E-06

编辑:当我输入3,14159作为输入时,我会得到-0,2622557-也许有帮助。

3 个答案:

答案 0 :(得分:4)

我认为您的问题不是浮点运算结果,而是字符串格式。 2.535182E-06等于0.00000265358,只是另一种显示形式。您可以使用string.Format方法获取所需的格式。

string.Format("{0:F11}",Math.Sin(3.14159))

答案 1 :(得分:2)

您的代码工作得很好,但是您的pi的精度不能很好地得出非常接近零的数字。如果使用此值,则必须使用10 ^ -5的公差。例如,使用3.14159265359的公差为10 ^ -12。

2.535182E-06也是0.000002535182的科学记号。

答案 2 :(得分:2)

2.535182E-06表示2.535182 * 0.000001,等于0.000002535182。 所以您得到正确的结果,我想您只是在答案末尾忽略了E-06。