Проблема с функцией JavaScript - PullRequest
3 голосов
/ 16 ноября 2011

У меня проблема с Math.sin. Я думал, что это выведет синус заданного целого числа. Поэтому я попытался Math.sin(30), и мой вывод составил -0.9880316240928618, а затем я проверил калькулятором, и он составил 0,5.

Ответы [ 4 ]

16 голосов
/ 16 ноября 2011

Параметры предполагаются в радианах, а не в градусах.

Попробуйте

Math.sin(Math.PI * (30/180));

В комментарии ниже отмечается, что предварительное вычисление отношения π / 180 является хорошей идеей. Можно добавить компаньона к Math.sin, который работает в градусах следующим образом:

Math.dsin = function() {
  var piRatio = Math.PI / 180;
  return function dsin(degrees) {
    return Math.sin(degrees * piRatio);
  };
}();

(Некоторые люди не любят расширять встроенные объекты, но так как никто не создает экземпляры Math-экземпляров & mdash; по крайней мере, я не & mdash; это не кажется ужасно оскорбительным.)

4 голосов
/ 16 ноября 2011

Math.sin работает в радианах , я думаю, ваш калькулятор в градусах.

3 голосов
/ 16 ноября 2011

Как было сказано выше, Math.sin () требует использования радианов в качестве входных данных.Чтобы преобразовать градусы в радианы, используйте:

Radians = (Degrees * (Math.PI/180))
1 голос
/ 16 ноября 2011

Math.sin принимает значения в радианах, а ваш калькулятор установлен в градусах.

...