为什么visual studio调试器显示错误的值,我如何纠正这一点

本文关键字:何纠正 这一点 studio visual 调试器 显示 错误 为什么 | 更新日期: 2023-09-27 18:14:51

我有一个简单的程序,在Visual Studio调试器中给了我奇怪的结果。

Console.WriteLine("4280.159d * 1000000 = {0}", 4280.159d * 1000000);
double D = 4280.159d * 1000000;
Console.WriteLine("D = {0}", D);
Console.WriteLine("Put a breakpoint here and look at value of D in debugger");

打印出以下内容:

4280.159d * 1000000 = 4280159000
D = 4280159000

这个输出是正确的,但是如果你在调试器中查看它,D的值显示为4280158999.9999995。

如果你在即时窗口中输入相同的方程,你会得到相同的错误答案。

获得正确答案的唯一方法是在调试器

中将其转换为十进制。
(decimal)4280.159d * 1000000
4280159000

在VS2010和VS2012中的行为是相同的,如果它是64位或32位似乎并不重要。为什么调试器给出与运行代码不同的结果,是否有办法修复它?

为什么visual studio调试器显示错误的值,我如何纠正这一点

调试器显示正确的值。WriteLine调用正在将小数四舍五入并将其转换为字符串,以便可以显示。