Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在我下面编写的代码中,我想得到tan 90的值为';无穷大';在代码中。但机器得到了更高的数字。我应该如何编辑代码?_C++ - Fatal编程技术网

C++ 在我下面编写的代码中,我想得到tan 90的值为';无穷大';在代码中。但机器得到了更高的数字。我应该如何编辑代码?

C++ 在我下面编写的代码中,我想得到tan 90的值为';无穷大';在代码中。但机器得到了更高的数字。我应该如何编辑代码?,c++,C++,我想做一个表格,可以显示所选度数的sin、cos、tan、cot值。正如我所说,我不能接受tan90的正确答案。我不知道如何把它改成“无限”。我在等你的帮助!:) #包括 #包括 #包括 使用名称空间std; main() { 双表[10][4]; int i=0,j=0; 双val=0,PI=3.14159; val=PI/180.0; printf(“\tİstenen Tablo\n\t-------------------\n”); printf(“\t ACI\t\t\t SIN\t\

我想做一个表格,可以显示所选度数的sin、cos、tan、cot值。正如我所说,我不能接受tan90的正确答案。我不知道如何把它改成“无限”。我在等你的帮助!:)

#包括
#包括
#包括
使用名称空间std;
main()
{
双表[10][4];
int i=0,j=0;
双val=0,PI=3.14159;
val=PI/180.0;
printf(“\tİstenen Tablo\n\t-------------------\n”);
printf(“\t ACI\t\t\t SIN\t\t\t COS\t\t\t\t TAN\t\t\t COT\n\t-----------\t\t\t\t\t-------\t\t\t
---\t\t\t------”;

对于(i=0;i得到不正确值的原因是,
π
不是3.14159,这只是它的真实值的近似值。事实上,任何非无限的十进制数字序列都是近似值,但位数越多,
i*val
就越接近应该传递到三角函数的正确值ic呼叫

一个更好的值应该是
math.h
中的
M_PI
,它的精度远远高于当前的精度

由于
double
类型的精度有限,您可能仍然无法获得预期的值。如果出现这种情况,您需要调整得到的值,然后才能使用浮点运算

例如,可以使用以下函数获得更多可接受的值,强制象限边界上的特定值,以避免这些结果中出现最小的不精确性:

double mySin(整数度){
int mod360=360度;
如果(mod360==0)返回0.0;
如果(mod360==90)返回1.0;
如果(mod360==180)返回0.0;
如果(mod360==270)返回-1.0;
返回正弦(360度*M_π/180.0);
}
双麦可思(整数度){
返回mySin(度+90);
}
双密顿(整数度){
int mod360=360度;
如果(mod360==0)返回0.0;
如果(mod360==90)返回1.0/0.0;
如果(mod360==180)返回0.0;
如果(mod360==270)返回-1.0/0.0;
返回tan(mod360*M_PI/180.0);
}
双myCot(整数度){
//现在tan()对象限正常工作
//边界,只需使用法线公式。
返回1.0/myTan(度);
}
这些都是从头开始构建的,以使用度输入而不是弧度,因为在进行任何浮点运算之前(这在处理超越数时本质上是不精确的),您可以为这些情况提供正确的结果


下面显示了一个完整的程序,它集成了这些函数并消除了您不需要的内容。当您可以立即打印值时,将所有这些值存储在一个数组中,然后打印出数组(无需其他用途)是没有意义的:

#包括
#包括
使用名称空间std;
双mySin(整数度){
int mod360=360度;
如果(mod360==0)返回0.0;
如果(mod360==90)返回1.0;
如果(mod360==180)返回0.0;
如果(mod360==270)返回-1.0;
返回sin(mod360*M_PI/180.0);
}
双麦可思(整数度){
返回mySin(度+90);
}
双密顿(整数度){
int mod360=360度;
如果(mod360==0)返回0.0;
如果(mod360==90)返回1.0/0.0;
如果(mod360==180)返回0.0;
如果(mod360==270)返回-1.0/0.0;
返回tan(mod360*M_PI/180.0);
}
双myCot(整数度){
//现在tan()对象限正常工作
//边界,只需使用法线公式。
返回1.0/myTan(度);
}
int main()
{
printf(“stenen Tablo”);
printf(“--------------\n”);
printf(“\t ACI\t SIN\t COS\t TAN\t COT\n”);
printf(“\t------\t------\t------\t------\t------\n”);
对于(int i=0;i<360;i+=10){
printf(“\t%12d\t%9.9lf\t%9.9lf\t%9.9lf\t%9.9lf\n”,
i、 mySin(i)、myCos(i)、myTan(i)、myCot(i));
}
返回0;
}
其输出为:

İstenen Tablo
-------------
阿西仙科斯坦科特酒店
------------    -----------     -----------     -----------     -----------
0.000000000 1.000000000 0.000000000 inf
10    0.173648178     0.984807753     0.176326981     5.671281820
20    0.342020143     0.939692621     0.363970234     2.747477419
30    0.500000000     0.866025404     0.577350269     1.732050808
40    0.642787610     0.766044443     0.839099631     1.191753593
50    0.766044443     0.642787610     1.191753593     0.839099631
60    0.866025404     0.500000000     1.732050808     0.577350269
70    0.939692621     0.342020143     2.747477419     0.363970234
80    0.984807753     0.173648178     5.671281820     0.176326981
90 1.000000000 0.000000000 inf 0.000000000
100    0.984807753     -0.173648178    -5.671281820    -0.176326981
110    0.939692621     -0.342020143    -2.747477419    -0.363970234
120    0.866025404     -0.500000000    -1.732050808    -0.577350269
130    0.766044443     -0.642787610    -1.191753593    -0.839099631
140    0.642787610     -0.766044443    -0.839099631    -1.191753593
150    0.500000000     -0.866025404    -0.577350269    -1.732050808
160    0.342020143     -0.939692621    -0.363970234    -2.747477419
170    0.173648178     -0.984807753    -0.176326981    -5.671281820
180.000000000-1.000000000.000000000 i
#include<math.h>
#include<stdlib.h>
#include<iostream>

using namespace std;

main()
{
    
    double table[10][4];
    int i=0,j=0;
    double val=0,PI=3.14159;
    val = PI / 180.0;

    printf("\tİstenen Tablo\n\t-------------\n");
    printf("\t ACI\t\t\t SIN\t\t\t COS\t\t\t TAN\t\t\t COT\n\t------\t\t\t------\t\t\t------\t\t\t--- 
 ---\t\t\t------");

    for(i=0;i<=90;i+=10)
    {
        for(j=0;j<5;j++)
        {
            switch (j)
            {
            case 0:table[i/10][j] = i; break;
            case 1:table[i/10][j] = sin(i*val);break;
            case 2:table[i/10][j] = cos(i*val);break;
            case 3:table[i/10][j] = tan(i*val);break;
            case 4:table[i/10][j] = 1/tan(i*val);break;
            }
        }
            printf("\n\t %lf  \t\t %lf\t\t %lf\t\t %lf\t\t %lf\n",table[i/10][0],table[i/10] 
 [1],table[i/10][2],table[i/10][3],table[i/10][4]); 
    }
   return 0;
}
#include <math.h>

const double deg2rad = M_PI / 180.0;

double tan_degrees(int n)
{
    bool neg = false, inv = false;

    if(n < 0) { n = -n; neg = true; }        // tan(-x)       = -tan(x)
    n %= 180;                                // tan(x + pi)   =  tan(x)
    if(n > 90) { n = 180 - n; neg = !neg; }  // tan(pi - x)   = -tan(x) 
    if(n > 45) { n = 90 - n;  inv = true; }  // tan(pi/2 - x) = 1 / tan(x)

    double val = tan(n * deg2rad);
    if(neg) val = -val;
    if(inv) val = 1. / val;
    return val;
}