Как получить удобные для пользователя значения для тригонометрических функций? - PullRequest
1 голос
/ 01 февраля 2012

Я занимаюсь разработкой приложения для Android. для математических расчетов. Там у меня есть несколько кнопок, таких как sin, cos, tan, которые должны показывать их соответствующие тригонометрические значения, для этого я использую соответствующие методы класса java.lang.Math, и это прекрасно работает. Но после некоторых испытаний я узнал, что он показывает некоторые результаты следующим образом

sin(90)=0.89399........   //I want it to show 1
cos(90)=-0.44807........  //I want it to show 0
tan(90)=-1.995200......   //I want it to show Infinity as sin(90)/cos(90)=1/0=Infinity

Как и в приведенных выше примерах, многие показывают результаты, подобные этому. Что я должен сделать это для получения результатов, как указано выше. Пожалуйста, помогите мне.

Ответы [ 4 ]

8 голосов
/ 01 февраля 2012

Ваша проблема в том, что Java использует радианы, а не градусы .Вы должны сначала преобразовать угол в рад.

Double rad = degrees /180 * pi;
4 голосов
/ 01 февраля 2012

Во-первых, тригонометрические функции не работают с градусами, которые вы используете. Вы должны отправить 3.1415926 / 2 вместо 90. В этом случае sin будет намного ближе к 1 и намного ближе к 0.

Но числа все равно будут с плавающей точкой. Если вы хотите округлить их для представления, используйте DecimalFormat класс или String.format() метод.

3 голосов
/ 01 февраля 2012

Javadoc на помощь:

Параметры: а - угол, в радиан .

(акцент мой)

Сначала преобразуйте свои градусы в радианы. 360 градусов = 2 * пи.

0 голосов
/ 01 февраля 2012

Посмотрите на Math.round () .

Кроме того, в прошлый раз, когда я проверял, всякий раз, когда вы делите на 0, вы не получаете бесконечность.Деление на 0 не определено.

Кроме того, Java использует радианы для тригонометрических функций, поэтому убедитесь, что вы используете радианы, а не градусы или градианы.

...