c中tan(90)的值?

c中tan(90)的值?,c,C,它给出的值是557135813.94455。值是否每次都保持不变??为什么它不显示无限 #include <stdio.h> #include <math.h> #define PI 3.14159265 int main () { double param, result; param = 90.0; result = tan ( param * PI / 180.0 ); printf ("The tangent of %f

它给出的值是557135813.94455。值是否每次都保持不变??为什么它不显示无限

#include <stdio.h>     
#include <math.h>       

#define PI 3.14159265

int main ()
{
  double param, result;
  param = 90.0;
  result = tan ( param * PI / 180.0 );
  printf ("The tangent of %f degrees is %f.\n", param, result );
  return 0;
}
#包括
#包括
#定义PI 3.14159265
int main()
{
双参数,结果;
参数=90.0;
结果=tan(参数*PI/180.0);
printf(“%f度的切线为%f.\n”,参数,结果);
返回0;
}

您没有传递Pi/2的值,而是传递90.0*3.14159265/180.0的近似值。

浮点算术不是精确的算术。您甚至不能使用
==
比较两个浮点数;e、 g.
0.6/0.2-3==0
应为真,但在大多数系统上为假。在执行浮点计算和期望精确结果时要小心;这是注定要失败的。考虑每个浮点计算只返回一个近似值;尽管这是一个非常好的值,有时甚至是一个精确值,但不要依赖它来精确。

代码要求的不是90°的切线,而是一个数字的切线,以弧度表示,接近90°。弧度的转换并不精确,因为π/2弧度不能精确表示为
double

解决方案是首先执行度数范围缩减,然后调用
tan(d2r(x))

更好的结果

The tangent method 1 of -360.0 degrees is  -2.4492935982947064e-16
The tangent method 2 of -360.0 degrees is  0.0000000000000000e+00
The tangent method 1 of -330.0 degrees is  -5.7735026918962640e-01
The tangent method 2 of -330.0 degrees is  -5.7735026918962573e-01
The tangent method 1 of -300.0 degrees is  -1.7320508075688770e+00
The tangent method 2 of -300.0 degrees is  -1.7320508075688774e+00
The tangent method 1 of -270.0 degrees is  5.4437464510651230e+15
The tangent method 2 of -270.0 degrees is  -inf
The tangent method 1 of -240.0 degrees is  1.7320508075688752e+00
The tangent method 2 of -240.0 degrees is  1.7320508075688774e+00
The tangent method 1 of -210.0 degrees is  5.7735026918962540e-01
The tangent method 2 of -210.0 degrees is  5.7735026918962573e-01
The tangent method 1 of -180.0 degrees is  -1.2246467991473532e-16
The tangent method 2 of -180.0 degrees is  0.0000000000000000e+00
...

阅读关于度、辐射等的
90.0*pi/180.0
非常令人困惑。为什么不干脆
pi/2
?编辑:Nevermind甚至没有注意到这是一个度到弧度的转换。不要自己定义圆周率,使用math.hOn我的系统中的M_PI、M_PI或M_PIl。你的程序的输出是557135115.020977。@nsilent22
M_PI
不是标准的
请参见
Angle  1.5707963250000001e+00 radian
Pi/2 = 1.5707963267948966192313216916398...
The tangent of 90.000000 degrees is 557135183.943528.
The tangent method 1 of -360.0 degrees is  -2.4492935982947064e-16
The tangent method 2 of -360.0 degrees is  0.0000000000000000e+00
The tangent method 1 of -330.0 degrees is  -5.7735026918962640e-01
The tangent method 2 of -330.0 degrees is  -5.7735026918962573e-01
The tangent method 1 of -300.0 degrees is  -1.7320508075688770e+00
The tangent method 2 of -300.0 degrees is  -1.7320508075688774e+00
The tangent method 1 of -270.0 degrees is  5.4437464510651230e+15
The tangent method 2 of -270.0 degrees is  -inf
The tangent method 1 of -240.0 degrees is  1.7320508075688752e+00
The tangent method 2 of -240.0 degrees is  1.7320508075688774e+00
The tangent method 1 of -210.0 degrees is  5.7735026918962540e-01
The tangent method 2 of -210.0 degrees is  5.7735026918962573e-01
The tangent method 1 of -180.0 degrees is  -1.2246467991473532e-16
The tangent method 2 of -180.0 degrees is  0.0000000000000000e+00
...