Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何输出足够精确的值来揭示调试和发布之间的算术差异?_C#_.net_Visual Studio 2010_C# 4.0_Floating Point - Fatal编程技术网

C# 我如何输出足够精确的值来揭示调试和发布之间的算术差异?

C# 我如何输出足够精确的值来揭示调试和发布之间的算术差异?,c#,.net,visual-studio-2010,c#-4.0,floating-point,C#,.net,Visual Studio 2010,C# 4.0,Floating Point,在我的程序中,这个片段: 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)) ); trace.Log( String.Format(“a={0:F10}b={1:F10}a这里有一个用于精确查

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

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))
);
trace.Log(
String.Format(“a={0:F10}b={1:F10}a这里有一个用于精确查找的字符串:
“r”
(用于“往返”)。它为您提供了一个具有足够数字的字符串,以保证在再次解析它时,它将精确地再现您开始使用的相同位


因此,不要使用
{0:F10}
,而是使用
{0:r}
,您将获得所有可用的精度。

仅此一票!非常感谢乔。“r”确实显示了“000”位置的精度"您能解释一下为什么F10给出了一个明显错误的结果吗?假设您使用的是
double
,实际可用的精度在15到16位之间。使用
F10
,您特别告诉它显示10位小数位。对于0.1到0.9之间的数字,这转换为只显示10位精度的数字。乔,那个例子使用浮点而不是双精度。我问的错误结果是F10的0.3921569000,而R的是0.392156869。我说错误是因为F10对R显示的所有数字都足够了,但F10的输出减少了两位数。
a= 0.3921569000 b= 0.3921569000 a<b= False
a= 0.3921569000 b= 0.3921569000 a<b= True