【问题标题】:How to prevent Visual Studio from displaying double values with 18 decimal places如何防止 Visual Studio 显示带有 18 位小数的双精度值
【发布时间】:2015-07-15 13:18:51
【问题描述】:

最近我注意到在我当前的 vb.net 项目中,有时(取决于值),如果我输入一个双精度值,编辑器会更改我的输入,例如:

当我输入...

 Dim x As Double = 0.6

...在按 Enter 提交该行后,它将变为:

 Dim x As Double = 0.59999999999999998

如果我直接撤消该操作,则它会恢复为我输入的原始值。该行中的任何未来编辑都将再次产生不希望的结果。

我知道0.6 内部计算为0.59999999999999998,因此它对正在运行的应用程序没有影响,但这很烦人,奇怪的是:这并不总是发生,如果我创建了一个新项目,那里也没有发生。

所以我的问题是:如何防止 VS 这样做?为什么会发生呢?为什么不总是这样(以前在我当前的项目中或在新项目中)?

我在 Intel CPU 上运行 64 位 Windows 8.1 - 如果这与它有关的话。

有人有什么想法吗?

编辑:我正在使用 Visual Studio 2013 Professional(12.0.31101.00 更新 4),是的,该项目已从几个早期的 VS 版本迁移。没有安装相关的加载项或扩展。禁用“漂亮列表”确实可以防止问题发生,但当然该选项的其他非常有用的方面也会被禁用:o(

EDIT2:在“漂亮列表”的提示之后,我找到了以下 SO 文章,但也没有找到解决方案:Visual Studio VB pretty listing settings

【问题讨论】:

  • 什么版本的 Visual Studio?任何重要的加载项或扩展?
  • 我从来没有见过这样的行为,可能是因为加载项?您可以尝试附加一个“R”来表示一个 Double 文字:Dim x As Double = 0.6R
  • 或者更好,如果可能的话,使用十进制类型...
  • Visual Studio 自己 这样做。它必须是某种扩展。
  • 在 Visual Studio 中运行的代码更改了数学协处理器控制字。要么改变计算精度,要么改变舍入模式,可能是后者。是的,当您在编辑代码时发生这种情况会非常痛苦。找到恶人并不容易。除了加载项,我知道 Microsoft ACE 数据提供程序does this。例如,您可以在服务器资源管理器窗口中使用它。

标签: vb.net visual-studio code-editor


【解决方案1】:

几年前,我有一个项目正在发生这种情况。正如您所写,该数字的原因是某些数字无法在二进制浮点变量中精确表示。更多关于这个here

我的项目已通过多个版本的 Visual Studio 进行了升级。它还与使用 VS Express 的开发人员共享。

如果我今天再次遇到这个问题,我会手动打开并检查项目文件,或者只是创建一个新项目并重新添加文件我无法快速定位问题,而且项目足够小。

如果您像我一样通过多个版本的 Visual Studio 升级了项目,它可能会拖动一些在项目选项对话框中不再可见的设置。

作为一个有趣的实验,您还可以尝试关闭 Visual Studio 的 Pretty Listings 以查看这是否是实际更改代码的原因。

【讨论】:

  • 这个项目非常大,有几个依赖项——手动重新创建它会很麻烦。如果我能解决它,我会尽量记住更新这篇文章。而且,是的:Pretty Listings 似乎是问题的一部分。谢谢你的时间!
  • 没问题。就像我写的那样,然后我会在文本编辑器中打开 .vbproj 文件并查找它与较新的项目文件之间的差异。特别是任何编译器选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 2019-05-14
  • 2019-05-18
  • 2015-07-29
  • 1970-01-01
相关资源
最近更新 更多