Тригонометрическая функция Python возвращает неожиданные значения

import math print "python calculator" print "calc or eval" while 0 == 0: check = raw_input() #(experimental evaluation or traditional calculator) if check == "eval": a = raw_input("operator\n") #operator if a == "+": b = input("arg1\n") #inarg1 c = input("arg2\n") #inarg2 z = b + c print z elif a == "-": b = input("arg1\n") #inarg1 c = input("arg2") #inarg2 z = b - c print z elif a == "/": b = input("arg1\n") #inarg1 c = input("arg2\n") #inarg2 z = b / c print z elif a == "*": b = input("arg1\n") #inarg1 c = input("arg2]n") #inarg2 z = b * c print z elif a == "^": b = input("arg1\n") #inarg1 c = input("arg2\n") #inarg2 z = b ** c elif a == "sin": b = input("arg1\n") #inarg1 var = math.degrees(math.sin(b)) print var elif a == "asin": b = input("arg1\n") #inarg1 var = math.degrees(math.asin(b)) print var elif a == "cos": b = input("arg1\n") #inarg1 var = math.degrees(math.cos(b)) print var elif a == "acos": b = input("arg1\n") #inarg1 var = math.degrees(math.acos(b)) print var elif a == "tan": b = input("arg1\n") #inarg1 var = math.degrees(math.tan(b)) print var elif a == "atan": b = input("arg1\n") #inarg1 var = math.degrees(math.atan(b)) print var elif check == "calc" : x = input() #takes input as expression print x #prints expression's result 

Разве это не синус 90 градусов 1? С этим оно появляется как что-то около 51,2? Калькулятор Google делает это тоже? BTW: это мой калькулятор python

  b = input("arg1\n") #inarg1 var = math.degrees(math.sin(b)) print var 

Эта одна и другие триггерные функции являются проблемой. По большей части это был простой калькулятор python, но я хотел добавить некоторые триггерные функции.

  • Как рассчитать угол между линией и горизонтальной осью?
  • Обратный Тан в питоне (tan-1)
  • math.sin неверный результат
  • Необычная математика с неправильными результатами?
  • Поверните линию вокруг центральной точки, задав две вершины
  • 6 Solutions collect form web for “Тригонометрическая функция Python возвращает неожиданные значения”

    Вы не хотите, чтобы преобразовать возвращаемое значение sin() в градусы – возвращаемое значение не является углом. Вместо этого вы хотите преобразовать аргумент в радианы, так как math.sin() ожидает радианы:

     >>> math.sin(math.radians(90)) 1.0 

    Грех и сон Питона принимают радианы не в градусах. Вы можете преобразовать, используя функцию math.radians. В основном, вы используете неправильные единицы.

    Вы используете градусы, но функция sin ожидает радианов (см. Документацию: help(math.sin) ). 90 ° – π / 2.

     >>> import math >>> math.sin(math.pi/2) 1.0 >>> math.radians(90) - math.pi/2 0.0 

    Преобразуйте свой вход от градусов к радианам, прежде чем вызывать math.sin

      var = math.degrees(math.sin(b)) 

    Этот код не делает то, что вы думаете. Он принимает sin b а затем преобразует этот ответ (который не находится в радианах!) От радианов до градусов.

    sin 90 радианов равен .894 . .894 радиан составляет 51 градус. Вот почему вы получаете ответ, но все это неправильно.

    Вы, вероятно, хотите:

      var = math.sin(math.radians(b)) 

    Большинство математических функций, включая математические функции Python, используют радианы в качестве меры для тригонометрических подпрограмм .

    Для сравнения:

     >>> math.sin(90) 0.8939966636005579 >>> math.sin(3.1415926535) 8.979318433952318e-11 >>> math.cos(180) -0.5984600690578581 >>> math.cos(2*3.1415926535) 1.0 >>> 
    Python - лучший язык программирования в мире.