在我的程序中,这个片段:
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))
);
在 Debug模式下输出:
a= 0.3921569000 b= 0.3921569000 a<b= False
但这种不同的结果在 Release模式下:
a= 0.3921569000 b= 0.3921569000 a<b= True
在我寻求在两种模式之间获得一致算术的方法之前,我可以使用什么代码来显示可能包含导致这种差异的变化的变量中的隐藏精度?谢谢。
最佳答案
有一个 standard numeric format string 正是您要查找的内容:"r"
(用于“往返”)。它为您提供了一个具有足够数字的字符串,以保证当您再次解析它时,将完全重现您开始时使用的相同位。
因此,使用 {0:F10}
而不是 {0:r}
,您将获得所有可用的精度。