Таинственный номер 18888888888888888
Один из наших тестеров сумел установить переменную, привязанную к ползуну, до 18888888888888888, которая может принимать значения только между 1-100 нормально. (Я могу наблюдать это в модели, которая сохраняется в файле xaml.) Что особенного в этом номере?
Вот некоторые подробности. Приложение имеет слайдер, оно привязано к наблюдаемому свойству в модели представления. Обычно, когда приложение сохраняет рабочее пространство, эта модель просмотра сохраняется вместе с помощью XamlServices.Save. Мой тестер сообщил о каком-то неудобном поведении, о значении ползунка, показывающем -214 при загрузке этого проекта. Я попросил его отправить мне файл, и значение в сохраненном xaml содержит мое загадочное число.
Я знаю, что это результат ошибки в моем коде или какой-то другой код библиотеки. Я, надеюсь, пригвошу его. Однако нормальные значения "мусора" не могут быть такими. Когда я google, я вижу некоторые страницы, не связанные с программированием, которые показывают, как-то это число было создано в истории Интернета (так что это не моя кошка). Короче говоря, я пытаюсь понять, как это число может быть создано в первую очередь, например, когда вы видите INT_MAX + 1, если вы достаточно опытны, вы можете его распознать (-2137483648)?
Ответы
Ответ 1
Предположим, что 1 в начале является владельцем места - ошибкой отображения двойной строки.
У нас есть 16 8. Двойной тип в С# имеет точность до 16 байт. Это может указывать на то, что дисплей слайдера пытается показать некоторый тип двойного значения мусора: 8888888888888888 или 0x1000100010001000100010001000100010001000100010001000100010001000.
Возможно, что тестер привел к тому, что значение double стало чем-то вроде значения NaN. (возможно, NaN отображается так) Это определенно объясняет длину строки.
Кроме того, из-за ограничений отображения класса слайдера, показывающего только числа, вероятно, он должен был прочитать 1x8888888888888888. Мусор, мусор?
Хорошо, это моя догадка.