编辑:我编写了与在家工作时相同的代码来重新创建错误。这是确切的代码!
我正在尝试将浮点数从 c++ 传递给 c#,并且我使用 c++ CLI 作为中间。我在 C++ cli 中有以下功能
void myclass::getFloats(float% f1, float %f2)
{
float f11=734212.384f;
float f22=467474.26675f;
f1=f11;
f2=f22;
}
当我在函数末尾放置一个断点并停在那里时,我看到:
- f1 持有:734212.38
- f2 持有:467474.28
由于浮点限制,我认为没关系。
但是当范围结束并且我返回到调用这个函数的 c# 代码时,它看起来像这样:
myclass m = new myclass();
float f1=0, f2=0;
m.getFloats(ref f1, ref f2);
我在 getFloat 函数之后停下来,我看到了。
- f1 持有 734212.4
- f2 持有 467474.281
我不知道为什么会发生这种情况,为什么在第一个数字中他四舍五入 0.38 到 0.4 而在第二个数字中他没有并且只是添加了 0.001 ?
任何帮助将不胜感激,在此先感谢