你的程序没有问题
成都创新互联主要从事成都网站建设、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务香格里拉,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
vc6.0 编译
q=(sin(x*PI/180)+sin(y*PI/180))/tan(z*PI/180);处出现
warning:“e:\c\bhj\bhj.cpp(16) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data”
这是因为sin 和 tan的 返回值是双精度double类型。把它赋值给 float q,就会丢失数据。
但是计算结果是基本正确的。如果想更精确计算 就把所有的 float 全部改成 double
math.h里的三角函数用的单位是弧度,你貌似错在这里。 答案补充 Example
/* SINCOS.C: This program displays the sine, hyperbolic
* sine, cosine, and hyperbolic cosine of pi / 2.
*/
#include math.h
#include stdio.h
void main( void )
{
double pi = 3.1415926535;
double x, y;
x = pi / 2;
y = sin( x );
printf( "sin( %f ) = %f\n", x, y );
y = sinh( x );
printf( "sinh( %f ) = %f\n",x, y );
y = cos( x );
printf( "cos( %f ) = %f\n", x, y );
y = cosh( x );
printf( "cosh( %f ) = %f\n",x, y );
} 答案补充 Output
sin( 1.570796 ) = 1.000000
sinh( 1.570796 ) = 2.301299
cos( 1.570796 ) = 0.000000
cosh( 1.570796 ) = 2.509178
Parameter
x
Angle in radians
C语言的三角函数库采用的单位都是弧度,如果要使用角度,就必须转换,从角度转换成弧度,或者是重写一个三角函数库。
方法一,在调用三角函数之前先把角度换算成弧度,调用反三角函数之后把弧度换算成角度就可以了。可以用 pi = 4.0 * atan(1) 算出pi,用 a = d /180.0*pi 转换角度到弧度。
例如: sin(45 /180.0*pi); 就是计算的sin45。
方法二,直接覆写三角函数。
例如sin函数:
double dsin(double d){
return sin(45 /180.0*pi); //原理和方法一样,调用的时候直接使用dsin(45)即可
}
求sin的:参考下 #includestdio.h void main() { double x,a,b,sum=0; printf("请输入x的弧度值:\n"); scanf("%lf",x); int i,j,count=0; for(i=1;;i+=2) { count++; a=b=1; for(j=1;j=i;j++) { a*=x; b*=(double)j; } if(a/b0.0000001) break; else { if(count%2==0) sum-=a/b; else sum+=a/b; } } printf("%lf\n",sum); }
sum = fun(x,y,z); //这里,应当接收函数的返回值
printf("f(x,y,z)=%f\n",sum);
调用math.h中的三角函数,需要将角度值变换为弧度值,代码如下:
#includestdio.h
#includemath.h
#define PI 3.14159265359
int main()
{
float st,a;
scanf("%f",st);
a = st * PI/180;
printf("sin(st)=%f\n", sin(a));
printf("cos(st)=%f\n", cos(a));
return 0;
}