我有一个非常奇怪的问题。我在即时窗口中运行它:
?(System.Convert.ToDouble(2458963.229671001113318401517D))
2458963.229671001
这是我所期望的!
然后,稍后在我的应用程序中,初始化托管 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()
行为方式发生变化。