dmc1989
@dmc1989

Почему с++ делит неправильно?

Есть у меня есть число - 1253054122093351682, я его делю на 65, и получаю 19277755724513104.
Проверил на калькуляторе, а у меня там не то получилось - 19277755724513102,8. Я еще использую floor. То есть, у меня в коде число на 2 больше чем должно быть. Как такую проблему можно исправить?

long long int nextLineNumber = floor(lineNumber / table.size()); // 19 277 755 724 513 104
// а должно быть 19 277 755 724 513 102
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
@galaxy
Уберите floor().
У вас и так тут lineNumber / table.size() целочисленное деление (с отбрасыванием дробной части).
С floor же происходит конвертация в double с потерей точности, потом снова в long long.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы