#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 не принимает степени.