Вопрос

Я делал тестирование подразделения на работе, и для одной из утверждений выскочила. Обратите внимание, что ожидаемые значения и фактические значения являются удваивающими.

Assert.AreEqual(expectedValue, actualValue);

Исключение заявило, что они не были равны, разрабатывая, что «ожидаемое значение: <6.8> Фактическое значение: <6.8>».

Ожидаемое значение - это жесткое кодированное 6.8, и фактическое значение сформулировано с использованием значений баз данных, проходящих через нашу классификацию методов (таких как равные записи, или натуральные перерывы Jenks).

Я предполагаю, что разница, вероятно, в том, что Mantisss из 2 значений аналогичны до наименее значимого бита. Я обновил тесты, чтобы включить эпсилон, чтобы найти, если два значения достаточно близко, но мне интересно, если есть способ заставить Mantissa соответствовать со значением отображения, если я отображал, что двойной. Существует ли такая коррекция мантиссы?

Это было полезно?

Решение

Я не совсем уверен, что вы имеете в виду, принудив Mantissa подбирать значение отображения ... находятся Нет двойных значений, которые именно 0,1, например.

Если вы хотите, чтобы какой-то код отобразить точный ценность двойного, однако, у меня есть DoubleConverter.cs. Файл, который делает его легко:

 double d = 0.1;
 string x = DoubleConverter.ToExactString(d);

Другая альтернатива - использовать спецификатор формата кругового пути («R») при преобразовании двойного в строку - это гарантирует, что результат имеет достаточно информации для воспроизведения того же точного значения позже. Другими словами, если x != y, потом x.ToString("r") != y.ToString("r").

Другие советы

Вы можете преобразовать как в строку: actualValue.ToString("0.000") и сравните те строки.

Это может быть сделано, чтобы соответствовать вашим требованиям.

Если вы хотите проверить, соответствует ли значения отображения по умолчанию, просто сравните значения отображения по умолчанию:

Assert.AreEqual(expectedValue.ToString(), actualValue.ToString());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top