Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): « 1 [2]   

> Без описания
Zireael
Отправлено: 19 Ноября, 2018 - 13:14:59
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




Так результат разный, отличается на 0.000002.
 
 Top
Kibor
Отправлено: 19 Ноября, 2018 - 13:37:19
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Zireael пишет:
Так результат разный, отличается на 0.000002.

Потому что там разный порядок операций получается.


double x=7 * f(); // это 7 * 10 / 3 (сначала множит потом делит)
double y=f() * 7; // это 10 / 3 * 7 (сначала делит потом множит)

А так как там бесконечность, то так считает. Почему не знаю. Короче надо учитывать это.
(Добавление)
Короче это из за того что бесконечность в Кибор ограничена числом знаков после точки.

То есть 3.33333333333 это 3.333333
И поэтому мы видим в конце погрешность, так как если кол знаков больше, эта погрешность уходит за границу выведенного числа.
 
 Top
Zireael
Отправлено: 19 Ноября, 2018 - 13:54:24
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




После обновления:
CODE:
int a=10;
int b=3;

int c=a-a/b*b; // 10-10/3*3=1
messagebox(c); // вернёт 0, вместо 1
 
 Top
Kibor
Отправлено: 19 Ноября, 2018 - 14:06:19
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Zireael пишет:
messagebox(c); // вернёт 0, вместо 1

?
Правильно.
Посчитайте на калькуляторе соблюдая порядок выполнения.

CODE:
10-10/3*3
10-3,333333333333333*3
10-10
0


То что a и b int не означает что в уравнение результат их деления будет целое.
 
 Top
Zireael
Отправлено: 19 Ноября, 2018 - 14:18:52
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
То что a и b int не означает что в уравнение результат их деления будет целое.

Тогда понятно, раньше-то было целочисленное деление.
 
 Top
Kibor
Отправлено: 19 Ноября, 2018 - 14:38:44
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Сейчас только с дробями не обращая внимания на тип.
Для того что бы привести к конкретному типу надо присвоить результат определенному типу переменной.
CODE:
int a=10;
int b=3;
int h=a/b;
int c=a-h*b;
messagebox(c);
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Отчет о ошибках »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by