MySQLデータベースからC#.NETアプリケーションにデータを読み込んでいます。データはDBType.Doubleとしてデータベースに保持されますが、私のアプリケーションで使用するために、Convert.ToDecimal()を使用してDecimalにキャストしました。データは測量で使用される位置データであり、Direct3Dウィンドウに3Dモデルを表示するために使用できます。
Direct3Dウィンドウ、つまりDirect3D dllがロードされていない場合、変換は正常に機能するため、データベースに保持されている1769301.6485186936、588030.8152837148などの値は、1769301.64851869、588030.81528371としてロードされます。ただし、Direct3Dモジュールをロードした場合、変換の結果、同じ値が1769301.7112576、5880300.79401984に変換されます。
基本的なコードは次のとおりです。ここで、頂点は3つの10進値、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);
}
}
}