編輯:我編寫了與在家工作時重新創建該錯誤相同的代碼。這是確切的代碼!將它們從CLI傳遞到C時,會發生變化#
我想從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?
任何幫助將不勝感激, 在此先感謝
因爲C++ CLI調試器顯示只有三個顯著數字(所以回合的顯示值),而C#有四個顯著位在其值的顯示器? –
你確定它不只是C++和C#調試器具有不同的舍入? – Medinoc
這不是這種情況,當我在cli中看到4.79999的手錶時,會出現這種情況,並且它會在c#中轉換爲4.8。該手錶會在CLI中顯示更多3位數字。 – OopsUser