我尝试在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
-也许有帮助。
答案 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。