小编Man*_*lem的帖子

System.Convert.ToDouble(decimal) 给出两个不同的答案

我有一个很奇怪的问题。我在即时窗口中运行它:

?(System.Convert.ToDouble(2458963.229671001113318401517D))

2458963.229671001
Run Code Online (Sandbox Code Playgroud)

这是我所期望的!

然后,稍后在我的应用程序中,初始化 Managed DirectX 后,我得到以下信息:

?(System.Convert.ToDouble(2458963.229671001113318401517D))

2458963.25
Run Code Online (Sandbox Code Playgroud)

在我的代码中达到那个点后,永远之后System.Convert.ToDouble()将返回截断和错误的结果。

我已经隔离了导致这种System.Convert.ToDouble()行为变化的单行:

new Device(adapterOrdinal, dType, this, flags, m_presentParams); 
Run Code Online (Sandbox Code Playgroud)

这是一个Microsoft.DirectX.Direct3D.Device对象,来自:

// Assembly: Microsoft.DirectX.Direct3D, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Run Code Online (Sandbox Code Playgroud)

我不确定为什么创建 aMicrosoft.DirectX.Direct3D.Device会导致System.Convert.ToDouble()行为方式发生变化。

c# precision managed-directx

3
推荐指数
1
解决办法
61
查看次数

标签 统计

c# ×1

managed-directx ×1

precision ×1