我用Python编写了这段代码
def hitsin(a):
a = a*57.3
return math.sin(a)
所以每当我把hitsin(x)x转换为弧度。当我把hitsin(90)的答案不是1或者任何数字接近1而是负数(它是-0.9971392129043587)时,我很困惑。我做错了吗?
p.s:我也尝试在C
中编写相同类型的代码#include <stdio.h>
#include <math.h>
int main(){
float degree;
float result;
degree = 90;
degree = degree*57.3;
result = cos(result);
printf("%f",result);
return 1;
}
但答案是一样的。
真诚地,你的 吉瑞答案 0 :(得分:13)
你应该除以180/pi
,而不是乘以。在Python中,您还可以使用math.radians()
进行从度数到弧度的转换:
def hitsin(a):
return math.sin(math.radians(a))
hitsin(90)
# 1.0
此外,我怀疑C代码提供与Python代码相同的结果,因为它使用cos()
而不是sin()
。
答案 1 :(得分:6)
你需要除以57.3(或更好的近似值180 /π),而不是乘法。
答案 2 :(得分:1)
您发生了单位转换错误:
将度数转换为弧度:
radians = (2 * pi * degrees) / 360
给出了:
radians = degrees / 57.295... = degrees * 0.01745...
答案 3 :(得分:0)
因子57.29 ...从弧度转换为度数。但是你需要完全相反。
def degree_to_radian(x):
from math import pi
return x*pi/180
# pi/180 = 0.0174…
def degsin(x):
from math import sin
return sin(degree_to_radian(x))