powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная работа функции INT
7 сообщений из 32, страница 2 из 2
Некорректная работа функции INT
    #38170155
MMM1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-erMMM1Скажите, пожалуйста в чем проблема?

как думаешь, сообщение появится?
Код: c#
1.
2.
double d = 1.00000018f - 1.00000029f;
if (d == 0)   MessageBox.Show("НОЛЬ!!!");


а ты проверь!
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38170493
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMM1,

имхо я не проверял, но сообщение будет видно, так как в условии мы сравниваем значение doble и целочисленное значение.
Но это догадка, без проверки )
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38170510
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesMMM1,

имхо я не проверял, но сообщение будет видно, так как в условии мы сравниваем значение doble и целочисленное значение.
Но это догадка, без проверки )Ваша догадка о причине появления сообщения не верна...
Лучше всё-таки проверить... всего-то две строчки кода в примере... но я-бы для лучшего понимания сути вопроса всё-таки добавил ещё две переменные типа double и прошел по примеру в отладчике...
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38170971
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesимхо я не проверял, но сообщение будет видно, так как в условии мы сравниваем значение doble и целочисленное значение.
Но это догадка, без проверки )
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            float f1,f2,f3;
            f1 = 1.00000018f;
            f2 = 1.00000029f; 
            if (f1 - f2 == 0)   MessageBox.Show("НОЛЬ - СООБЩЕНИЕ ПОЯВИТСЯ!!!");

                //ларчик отркрывается просто. 
                byte[] bf1 = new byte[4];
                byte[] bf2 = new byte[4];
                fixed (byte* b = bf1)   *((float*)b) = 1.00000018f;
                fixed (byte* b = bf2)   *((float*)b) = 1.00000029f;
                // сравниваем значение массивов bf1 & bf2

            f1 = 1.00000018f;
            f3 = 1.00000017f;
            if (f1 - f3 == 0) MessageBox.Show("НЕ НОЛЬ ))) А ЭТО НЕ ПОЯВИТСЯ!!!");
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38171058
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в школе учат, что плавающие на равенство сравнивать нельзя. только abs(x-y) с нужным ε
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38171069
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилв школе учат, что плавающие на равенство сравнивать нельзя. только abs(x-y) с нужным ε
и правильно учат. ТС видимо тогда болел.
а сей пример наглядно показывает ограничение , накладываемое разрядной сеткой. ничё более.
...
Рейтинг: 0 / 0
Некорректная работа функции INT
    #38171110
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erИзопропилв школе учат, что плавающие на равенство сравнивать нельзя. только abs(x-y) с нужным ε
и правильно учат. ТС видимо тогда болел.
а сей пример наглядно показывает ограничение , накладываемое разрядной сеткой. ничё более.
Точно.

Ну или ещё для совсем уж большой чистоты экскримента можно поменять тип переменных с double на decimal и поглядеть на результат. НО, перед этим нужно прочитать про оба эти типа документацию. Вдумчиво так почитать (это для ТС-а).
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная работа функции INT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]