Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » Функции

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

11. Zireael - 19 Ноября, 2018 - 05:14:59 - перейти к сообщению
Так результат разный, отличается на 0.000002.
12. Kibor - 19 Ноября, 2018 - 05:37:19 - перейти к сообщению
 Zireael пишет:
Так результат разный, отличается на 0.000002.

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


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

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

То есть 3.33333333333 это 3.333333
И поэтому мы видим в конце погрешность, так как если кол знаков больше, эта погрешность уходит за границу выведенного числа.
13. Zireael - 19 Ноября, 2018 - 05:54:24 - перейти к сообщению
После обновления:
CODE:
int a=10;
int b=3;

int c=a-a/b*b; // 10-10/3*3=1
messagebox(c); // вернёт 0, вместо 1
14. Kibor - 19 Ноября, 2018 - 06:06:19 - перейти к сообщению
 Zireael пишет:
messagebox(c); // вернёт 0, вместо 1

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

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


То что a и b int не означает что в уравнение результат их деления будет целое.
15. Zireael - 19 Ноября, 2018 - 06:18:52 - перейти к сообщению
 Цитата:
То что a и b int не означает что в уравнение результат их деления будет целое.

Тогда понятно, раньше-то было целочисленное деление.
16. Kibor - 19 Ноября, 2018 - 06:38:44 - перейти к сообщению
Сейчас только с дробями не обращая внимания на тип.
Для того что бы привести к конкретному типу надо присвоить результат определенному типу переменной.
CODE:
int a=10;
int b=3;
int h=a/b;
int c=a-h*b;
messagebox(c);

Powered by ExBB FM 1.0 Final