Выполнение расчета в задаче c - PullRequest
3 голосов
/ 03 января 2012

Мне нужна переменная a = 6700000^2 * (a - b) (2 + sinf(a)+ s inf(b)), где a и b - это числа с плавающей точкой от -7 до 7. Мне нужна вся точность, которую может дать мне число с плавающей точкой.

Какой тип данных должен быть a? Является ли sinf правильной функцией для получения максимальной точности из a и b? И a и b должны быть в радианах или градусах?


Ну, я допустил ошибку, когда отправил выражение, правильное выражение: c = 67000000 ^ 2 * (ab) (2 + sinf (a) + sinf (b)), и моя проблема с c. "A" и "b" являются числами с плавающей точкой, и они передаются мне как числа с плавающей точкой, они действительно являются координатами (широта и долгота), так что это не моя забота ... Меня беспокоит, теряю ли я точность при использовании sinf на них? И какой тип должен быть, чтобы я не терял точность, потому что я использую длинную двойную переменную d, чтобы хранить сумму нескольких переменных c, а d возвращается мне как ноль, и это не должно 1 или 2) поэтому я догадывался, что теряю некоторую точность при вычислении посылок c ... Я использовал c как двойное число ... может быть, я теряю некоторую точность при вычислении c?

Большое спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 03 января 2012

Не могу сказать, достаточно ли float для вашего приложения.Если вам нужна большая точность, используйте double, а затем sin() вместо sinf().

Стандартные функции триггера принимают углы в радианах, как вы обнаружите, прочитав соответствующая документация .

1 голос
/ 03 января 2012

Вместо использования float, вы должны использовать double, если вы не хотите беспокоиться о памяти. Не забудьте затем изменить sinf() на sin() и использовать радианы.

0 голосов
/ 03 января 2012

Если вы хотите получить максимальную точность без использования собственных типов, вы должны использовать double вместо float. В этом случае вы можете просто использовать sin(3). Согласно справочной странице , вы должны передать аргумент в радианах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...