objective-c(math.h)中的tan(pi/2)未定义

Mas*_*imo 3 c objective-c math.h ios

我写了这个测试代码:

NSLog(@"%g", tan(M_PI / 2.0));
Run Code Online (Sandbox Code Playgroud)

并且控制台的输出是:

1.63312e+16
Run Code Online (Sandbox Code Playgroud)

问题是近似的,对吧?我是否犯了一些错误或者math.htan函数真的不能处理这个案例本身(给我INFINITY回复)?我自己应该处理这些输入案例(例如:当我得到pi/2输入值时我会返回错误信息)还是有更好(更优雅)的方法来获得正确的值?

谢谢

Dan*_*ani 8

其因M_PI != real pi,因为它不能代表,让你从得到的M_PI是圆周率的近似值,这在它的切线就是你得到的.
编辑:以下内容:

printf("cos(M_PI / 2) = %.30f\nsin(M_PI / 2) = %.30f\n",
       cos(M_PI / 2), sin(M_PI / 2));
Run Code Online (Sandbox Code Playgroud)

将打印

cos(M_PI / 2) = 0.000000000000000061232339957368
sin(M_PI / 2) = 1.000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

哪个节目cos(pi / 2)非零.
做分工会给

1.63312393531953E16
Run Code Online (Sandbox Code Playgroud)

这正是你得到的.