С#, VS 2010
Мне нужно определить, является ли значение float NaN.
Тестирование поплавка для NaN с использованием
float.IsNaN(aFloatNumber)
сбой при переполнении стека.
Итак,
aFloatNumber.CompareTo(float.NaN).
Не происходит сбой, но это не полезно, поскольку он возвращает NaN независимо:
aFloatNumber - float.NaN
Поиск "переполнения стека" возвращает результаты об этом веб-сайте вместо результатов о фактическом переполнении стека, поэтому я не могу найти соответствующие ответы.
Почему мое приложение переходит в переполнение стека при тестировании для NaN?
Изменить: стек вызовов:
Изменить: это явно что-то в моем коде: это утверждение:
bool aaa = float.IsNaN(float.NaN);
- работает ОК в конструкторе приложения сразу после InitializeComponent();
- работает в конструкторе класса для настраиваемого элемента управления сразу после InitializeComponent();
- но сбой в обработчике событий внутри класса для настраиваемого элемента управления.
Итак, это то, что я делаю:
- Аннотация Пользовательский контроль: открытый абстрактный частичный класс ConfigNumberBaseBox: TextBox
- имеет обработчик события Validate ValidateTextBoxEntry
- ValidateTextBoxEntry определяется внутри класса ConfigNumberBaseBox
- Пользовательский элемент управления, который наследует от ConfigNumberBaseBox: открытый частичный класс ConfigTemperBox: ConfigNumberBaseBox
- Запустите приложение
- Когда я закончу редактирование элемента управления ConfigTemperBox, ValidateTextBoxEntry вызывается
- ValidateTextBoxEntry работает нормально, пока не встретит float.IsNaN
- переполнение стека
Edit:
Debug.WriteLine() показывает, что код выполняется только один раз: нет рекурсии.
Edit:
Это работает:
float fff = 0F;
int iii = fff.CompareTo(float.PositiveInfinity);
Сбой:
float fff = 0F;
int iii = fff.CompareTo(float.NaN);