Покинул форум
Сообщений всего: 8203
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
Zireael пишет:
Так результат разный, отличается на 0.000002.
Потому что там разный порядок операций получается.
double x=7 * f(); // это 7 * 10 / 3 (сначала множит потом делит)
double y=f() * 7; // это 10 / 3 * 7 (сначала делит потом множит)
А так как там бесконечность, то так считает. Почему не знаю. Короче надо учитывать это. (Добавление)
Короче это из за того что бесконечность в Кибор ограничена числом знаков после точки.
То есть 3.33333333333 это 3.333333
И поэтому мы видим в конце погрешность, так как если кол знаков больше, эта погрешность уходит за границу выведенного числа.
Zireael
Отправлено: 19 Ноября, 2018 - 13:54:24
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
После обновления:
CODE:
int a=10;
int b=3;
int c=a-a/b*b; // 10-10/3*3=1
messagebox(c); // вернёт 0, вместо 1
Kibor
Отправлено: 19 Ноября, 2018 - 14:06:19
Эксперт
Покинул форум
Сообщений всего: 8203
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
Zireael пишет:
messagebox(c); // вернёт 0, вместо 1
?
Правильно.
Посчитайте на калькуляторе соблюдая порядок выполнения.
CODE:
10-10/3*3
10-3,333333333333333*3
10-10
0
То что a и b int не означает что в уравнение результат их деления будет целое.
Zireael
Отправлено: 19 Ноября, 2018 - 14:18:52
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
Цитата:
То что a и b int не означает что в уравнение результат их деления будет целое.
Тогда понятно, раньше-то было целочисленное деление.
Kibor
Отправлено: 19 Ноября, 2018 - 14:38:44
Эксперт
Покинул форум
Сообщений всего: 8203
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
Сейчас только с дробями не обращая внимания на тип.
Для того что бы привести к конкретному типу надо присвоить результат определенному типу переменной.
CODE:
int a=10;
int b=3;
int h=a/b;
int c=a-h*b;
messagebox(c);
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.