私は、MySQLデータベースからC#.NETアプリケーションにデータをロードしています。データはDBType.Doubleとしてデータベースに保持されますが、私のアプリケーションではConvert.ToDecimal()を使用してDecimalにキャストします。データは測量に使用される位置データであり、3DモデルをDirect3Dウィンドウに表示するために使用できます。Convert.ToDecimal DirectX/Direct3Dがロードされたときに異なる結果を出す
Direct3Dウィンドウ、したがってDirect3D dllがロードされていない場合、変換は正常に動作し、1769301.6485186936,5880300.8152837148などの値は1769301.64851869,5880300.81528371としてロードされます。しかし、Direct3Dモジュールを読み込んだ場合、変換結果は1769301.7112576、5880300.79401984に変換される同じ値になります。頂点が3進値、X、YおよびZの
List<vertex> positions = new List<vertex>();
using (MySqlCommand cmd = new MySqlCommand("SELECT x, y, z FROM positionTable;", conn))
{
MySqlDataReader dr = cmd.ExecuteReader();
try
{
while (dr.Read())
{
vertex position = new vertex();
position.X = Convert.ToDecimal(dr[0]);
position.Y = Convert.ToDecimal(dr[1]);
position.Z = Convert.ToDecimal(dr[2]);
positions.Add(position);
}
}
}
Direct3Dが問題のスレッドの「NumberFormatInfo」を変更していると思います。設定方法については、[NumberFormatInfo](http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx)を参照してください。 –
@JoshuaDrake D3D9では、実際の浮動小数点値の変更(デフォルト)は書式設定だけでなく、実際には変更されています。私はこれが問題だと思う。 –