【发布时间】:2019-01-07 02:08:22
【问题描述】:
我尝试在 C# 中将字符串转换为浮点数。我尝试了在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 - 也许这会有所帮助。
【问题讨论】:
-
如果您能提供minimal reproducible example,那就太好了。请务必包含您正在使用的输入(在 C# 代码中)和您对该输入所期望的确切结果(以及您实际收到的结果)。
-
我还是不明白你想要什么结果。您能否向我们展示您的输入和预期输出?
-
我尝试了
Console.WriteLine(convertedParameter.ToString("G10"));并扫描发现它变成了3.14159012,因为浮点值不准确。将您的 .NET 值与 Google 的值进行比较会产生大约1.6E-9(1.6 x 10^-9) 的差异,因此这似乎不是问题。 -
另外,请注意
double PI = double.Parse(Math.PI.ToString());然后Math.Sin(PI)和Math.Sin(Math.PI)将给出两个不同的结果。Math.PI的精度为 +2。如果您忽略-16,差异可能看起来非常大。
标签: c# string floating-point