Пишу проект, в котором необходима большая точность вычислений угла, а так же cos и sin. Обнаружил, что значения, передаваемые мной в приведённые функции, преобразуются из long double в double (Мне это даже компилятор подсвечивает). Я нашёл определение этих функций, они имеют перегрузку с параметрами long double, однако, почему то происходит преобразование в double.
Выглядит примерно так:
ax += F*cos(angle) / Objects[i].getMass();/*ax, angle и mass - переменные типа long double*/
Тут же я получаю предупреждение: implicit conversion loses floating-point precision: 'long double' to 'double'
В чём дело?
Перегруженные функции объявлены в пространстве std заголовка <cmath>, т.е. называются std::cos, std::sin, std::atan2. Именно их и надо вызывать.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники