我怎样才能输出足够精确的值来显示调试和发布之间的算术差异?

本文关键字:布之间 之间 调试 显示 输出 | 更新日期: 2023-09-27 18:06:03

在我的程序中,这个片段:

trace.Log(
 String.Format("a= {0:F10} b= {1:F10} a<b= {2}",
  b.GetPixel(447, 517).GetBrightness(), (100F / 255F), 
  b.GetPixel(447, 517).GetBrightness() < (100F / 255F))
);

在调试模式下输出:

a= 0.3921569000 b= 0.3921569000 a<b= False

但是在释放模式下,结果不同:

a= 0.3921569000 b= 0.3921569000 a<b= True

在我寻求一种方法在两种模式之间获得一致的算法之前,我可以使用什么代码来显示可能包含导致这种差异的变化的变量中的隐藏精度?谢谢。

我怎样才能输出足够精确的值来显示调试和发布之间的算术差异?

有一个标准的数字格式字符串,正是您正在寻找的:"r"(表示"往返")。它给你一个有足够数字的字符串,以保证当你再次解析它时,将完全再现你开始时的相同位。

所以用{0:r}代替{0:F10},你将得到所有可用的精度