我们正在将一个C++数学库转换为C#。该库混合使用浮点数和双精度浮点数(有时进行类型转换),我们正在尝试做同样的事情,以便在C#中获得与C++中完全相同的结果,但这证明非常困难,甚至是不可能的。
我认为问题可能是以下一个或多个,但我不是专家:
编辑: 我们正在使用VC6和.NET4.0。
由于保密协议,我无法提供计算示例,但我可以展示一些数字来说明差异...这些数字本身可能没有什么用处。
需要注意的是,这些数字包括复合问题。这些都是计算结果。
我认为问题可能是以下一个或多个,但我不是专家:
- 将浮点数转换为双精度浮点数,以及将双精度浮点数转换为浮点数会导致不可预测的结果,并且在C++和C#中处理方式不同。
- C++和C#处理浮点精度的方式不同,无法相互模拟。
- 在.NET中有某些设置可以使其像C++一样运行,但我找不到它们(两者都是32位)。
编辑: 我们正在使用VC6和.NET4.0。
由于保密协议,我无法提供计算示例,但我可以展示一些数字来说明差异...这些数字本身可能没有什么用处。
8.085004000000000 (C#) vs.
8.084980000000000 (C++)
8.848165000000000 (C#) vs.
8.848170000000000 (C++)
0.015263214111328 (C#) vs.
0.015263900756836 (C++)
需要注意的是,这些数字包括复合问题。这些都是计算结果。