Convert.ToDecimal дает разные результаты при загрузке DirectX/Direct3D

Я загружаю данные из базы данных MySQL в приложение C#.NET. Данные хранятся в базе данных как DBType.Double, но для использования в моем приложении я привожу к Decimal с помощью Convert.ToDecimal(). Данные представляют собой позиционные данные, используемые при съемке, и их можно использовать для отображения 3D-модели в окне Direct3D.

Когда окно Direct3D и, следовательно, dll Direct3D не загружены, преобразование работает нормально, так что такие значения, как 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);
    }
  }
}
6
задан lukiffer 10 April 2012 в 21:18
поделиться