vs2013 / vs2017在即时窗口中显示双精度不同

时间:2019-03-08 19:03:35

标签: c# visual-studio visual-studio-2017

我有以下代码行:

double r = 0.000056262413896897934;

在Visual Studio 2013中,我转到即时窗口并输入:

?r

结果将显示double的值:

0.000056262413896897934

但是,如果我在Visual Studio 2017中调出项目并在立即窗口中键入此内容:

?r

它显示以下结果(指数格式):

5.6262413896897934E-05

我希望Visual Studio 2017以与Visual Studio 2013相同的方式显示格式:

0.000056262413896897934

不仅用于此变量或此解决方案,而且作为永久设置。有谁知道如何做到这一点?预先感谢

1 个答案:

答案 0 :(得分:0)

正如@Amy所提到的,您可以使用DebuggerDisplay来更改调试器中对象的外观。由于double是内置类型,您不能仅更改其实现。对于这种情况,调试器具有一项功能,可以在DebuggerDisplay

中实现的外部autoexp.cs实现中加载
  1. 以管理员身份打开autoexep.cs文件,该文件应位于以下目录中: C:\Program Files (x86)\Microsoft Visual Studio\16\Preview\Common7\Packages\Debugger\Visualizers\Original显然会随您的VS版本而改变,但是如果您搜索autoexp.cs,则会找到它。
  2. 在该文件中,添加以下代码:[assembly: DebuggerDisplay(@"{ToString(""F17""),nq}", Target = typeof(Double))],这将告诉调试器在显示ToString("F17")时基本上执行double
  3. 以管理员身份打开开发人员命令提示符,然后导航至autoexp.cs所在的位置C:\Program Files (x86)\Microsoft Visual Studio\16\Preview\Common7\Packages\Debugger\Visualizers\Original
  4. 使用csc /t:library autoexp.cs
  5. 构建文件
  6. 重新加载VS并运行场景

然后您应该会看到类似的内容:

Immediate window evaluating a double

有关DebuggerDisplay的更多信息,请参见我们的文档:https://docs.microsoft.com/en-us/visualstudio/debugger/using-the-debuggerdisplay-attribute?view=vs-2017,有关ToString的{​​{1}}实现的更多信息,请参见:https://docs.microsoft.com/en-us/dotnet/api/system.double.tostring?view=netframework-4.7.2