Как я могу вывести значения с точностью, достаточной для выявления этого арифметического расхождения между Debug и Release? - PullRequest
4 голосов
/ 17 августа 2011

В моей программе этот фрагмент:

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

Прежде чем искать способ получить согласованную арифметику между этими двумя режимами, какой код я могу использовать для отображения скрытой точности в переменной (ях), которая предположительно содержит вариацию, вызывающую это расхождение?Благодаря.

1 Ответ

2 голосов
/ 17 августа 2011

Существует стандартная строка числового формата для именно того, что вы ищете: "r" (для «туда-обратно»).Он дает вам строку с достаточным количеством цифр, чтобы гарантировать, что при повторном анализе она точно воспроизведет те же биты, с которых вы начали.

Поэтому вместо {0:F10} используйте {0:r}, и вы получитевся доступная точность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...