Почему функции cos(), sin(), atant2() преобразуют long double в double?

100
31 января 2021, 12:40

Пишу проект, в котором необходима большая точность вычислений угла, а так же 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'

В чём дело?

Answer 1

Перегруженные функции объявлены в пространстве std заголовка <cmath>, т.е. называются std::cos, std::sin, std::atan2. Именно их и надо вызывать.

READ ALSO
Не применяются стили bootstrap для класса .table-hover

Не применяются стили bootstrap для класса .table-hover

Всем приветЕсть проект на vue с компонентами(

126
Выровнять блоки по высоте

Выровнять блоки по высоте

Предварительно прошу прощения за примитивный вопрос, но я в тупике) Пытаюсь разобраться с Bootstrap 4 и сверстать примитивную карточку товаров,...

140