我有一个使用Microsoft Visual C++ 6.0编写的应用程序。现在,我已经使用C#在Visual Studio 2010中重写了该应用程序,但由于精度问题,结果不匹配。其中一个这样的精度问题是以下问题。
float a = 1.0f;
float b = 3.0f;
float c = a / b;
这是在 Visual Studio 2010 中运行的 C# 代码,返回值 c
的值为 0.333333343
但是,当使用 Visual C++ 6.0 运行同样的代码时,在值定义中将 f 去除后,c 的值为 0.333333
。
有人能够解决这个问题并解释如何在 Visual Studio 和 Visual C++ 6.0 中获得相同的 c 值吗?
实际上,这些值来自观察窗口。我得知不同版本的 Visual Studio 可能在浮点格式表示方面存在差异。因此,观察窗口中的值可能没有用处。这就是为什么我在两个 Visual Studio 版本中打印了值的原因,结果如下。 在使用 Visual C++ 语言的 Visual Studio 6.0 中,它为 0.333333(六个3)
但是在使用 C# 语言的 Visual Studio 10 中,它为 0.3333333(七个3)。
那么,有谁能帮助我使我的 C# 程序产生与 Visual C++ 相同的结果吗?(即,如何使浮动操作在两个版本上产生相同的结果?)
double
),但是显示数字给用户的方法不同,所以你可能只是看到了不同的显示默认值。 - Mr Listerfloat
的范围和精度”(强调添加)。因此,后台精度是实现定义的。.NET Framework很可能在幕后使用双精度。 - phoog