Код ведет себя по-разному в режиме выпуска и режима отладки

У нас есть несколько модульных тестов, которые не работают при запуске в режиме Release и режиме отладки. Если я подключу отладчик в режиме выпуска, тесты пройдут. Здесь слишком много кода для публикации, поэтому я просто ищу передовые методы отладки проблем, связанных с режимом выпуска. Я проверил:

РЕШЕНИЕ: В данном случае это потому, что я сравнивал переменные с плавающей запятой на равенство. Я не мог изменить число с плавающей запятой на десятичное без значительного рефакторинга, поэтому я добавил метод расширения:

public static class FloatExtension
{
    public static bool AlmostEquals(this float f1, float f2, float precision)
    {
        return (Math.Abs(f1 - f2) <= precision);
    }

    public static bool AlmostEquals(this float f1, float f2)
    {
        return AlmostEquals(f1, f2, .00001f);
    }

    public static bool AlmostEquals(this float? f1, float? f2)
    {
        if (f1.HasValue && f2.HasValue)
        {
            return AlmostEquals(f1.Value, f2.Value);
        }
        else if (f1 == null && f2 == null)
        {
            return true;
        }
        return false;
    }
}

9
задан Shaun Bowe 24 January 2011 в 21:37
поделиться