DXライブラリ for VisualC#(Ver.3.22e)を.NET Ver.4(VisualStudio2010 C#)で利用させていただいています。
DxLib_Init()を実行すると、平方根を求めるsqrt関数"double System.Math.Sqrt(double)"の答えが変わってしまいます。
string AnsA = System.Math.Sqrt(2.0d).ToString() + "\n";
DxLib_Init();
string AnsB = System.Math.Sqrt(2.0d).ToString() + "\n";
System.IO.File.WriteAllText("c:\debug.txt", AnsA+AnsB);
上記を実行すると
AnsA = 1.4142135623731
AnsB = 1.41421353816986
となり、AnsBはfloatで計算した結果をDouble型に変換した値になっています。
DxLib_Init()によって、System.Math.Sqrtがラッピングされているのでしょうか?
回避策として、『Sqrtの代わりにSystem.Math.Pow(2.0d,0.5d)を使う』方法を見つけましたが、理由が知りたいのと、
他の関数にも影響が無いでしょうか?
また、根本的な回避策は無いでしょうか?