Почему Scala делает это, когда я пытаюсь преобразовать из радианов / градусов и наоборот?

#scala #math

#scala #математика

Вопрос:

Предположим, у меня есть метод, который принимает значение Int и возвращает значение sin ввода.

 def sinTest(x: Int): Double = {
    Math.sin(x)
}
def main(args: Array[String]): Unit = {
    println(sinTest(30))
  }
  

Вывод для этого кода: -0.9880316240928618 (как и ожидалось).
Однако, когда я меняю Math.sin(x) на Math.sin(x.toDegrees), это дает мне это: -0.40979706006803573

Разве это не должно давать мне 0,5? Почему он возвращает это число? Однако, когда я делаю Math.sin(x.toRadians), это дает мне это: 0.5000000126183913

Почему, когда я переключаю его на радианы, он дает мне 0,5, когда на самом деле он должен давать 0,5 при преобразовании в градусы?

Комментарии:

1. Нет. Math.sin принимает двойное значение в радианах, и для этого вам нужно преобразовать 30 градусов, которые у вас есть toRadians .

2. Обратите внимание, что toDegrees это не означает интерпретировать «безразмерные 30» как градусы, а скорее преобразовать радианы в градусы.

3. Тогда что такое -0.9880316240928618. Когда я конвертирую обратно, разве это не должно давать тот же результат?

4. -0.9880316240928618 — это грех 30 радиан. Что вы подразумеваете под «когда я конвертирую обратно?»

5. Math.sin(x.toDegrees) не имеет смысла делать, потому что Math.sin не принимает степени.