Я хочу реализовать самую большую целочисленную функцию. ["Самая большая целочисленная функция" является вполне стандартное имя для того, что также известно как функция пола.]
int x = 5/3;
Мой вопрос с большими числами, могла там быть потеря точности, поскольку 5/3 произведет двойное?
Править: Самая большая целочисленная функция является целым числом, меньше чем или равным X. Пример:
4.5 = 4
4 = 4
3.2 = 3
3 = 3
Что я хочу знать, что 5/3 собирается произвести двойное? Поскольку раз так у меня будет потеря точности при преобразовании в интервал.
Надежда это имеет смысл.
Вы потеряете дробную часть частного. Так что да, чем больше число, тем выше относительная точность, например, по сравнению с 5000/3000
.
Однако 5/3
вернет целое число, а не двойное. Чтобы заставить его делиться как двойное, введите тип делимого как static_cast
.
Целочисленное деление дает целочисленные результаты, поэтому 5/3 равно 1, а 5% 3 равно 2 (оператор остатка). Однако это не обязательно верно с отрицательными числами. В исходном стандарте C ++ -5 / 3 могло быть либо -1 (округление до нуля), либо -2 (нижний предел), но было рекомендовано -1. В последнем проекте C ++ 0B (который почти наверняка очень близок к окончательному стандарту) это -1, поэтому поиск пола с отрицательными числами сложнее.
5/3 всегда будет давать 1 (целое число), если вы сделать 5,0 / 3 или 5 / 3,0 результат будет двойным.
Поскольку в C и C++, как уже говорили другие, / - это целочисленное деление, оно вернет int. в частности, оно вернет пол двойного ответа... (C и C++ всегда усекают) Итак, в принципе, 5/3 - это именно то, что вам нужно.
Это может быть немного странно в отрицательных числах, так как -5/3 => -2, что может быть или не быть тем, что вы хотите...