У меня очень странная проблема. Я запускаю это в ближайшем окне:
?(System.Convert.ToDouble(2458963.229671001113318401517D))
2458963.229671001
Что я и ожидаю!
Затем, позже в моем приложении, после инициализации Managed DirectX, я получаю следующее:
?(System.Convert.ToDouble(2458963.229671001113318401517D))
2458963.25
После того, как я достигну этой точки в моем коде, навсегда после того, как System.Convert.ToDouble()
вернет усеченные и неправильные результаты.
Я выделил одну строку, которая вызывает это изменение в поведении System.Convert.ToDouble()
:
new Device(adapterOrdinal, dType, this, flags, m_presentParams);
Это Microsoft.DirectX.Direct3D.Device
объект, из:
// Assembly: Microsoft.DirectX.Direct3D, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Я не уверен, почему создание Microsoft.DirectX.Direct3D.Device
вызывает изменение в действии System.Convert.ToDouble()
.