Задать вопрос
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
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Решения вопроса 1
@galaxy
Уберите floor().
У вас и так тут lineNumber / table.size() целочисленное деление (с отбрасыванием дробной части).
С floor же происходит конвертация в double с потерей точности, потом снова в long long.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы