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

时间:2011-12-10 16:30:49

标签: objective-c c ios math.h

我写了这个测试代码:

NSLog(@"%g", tan(M_PI / 2.0));

并且控制台的输出是:

1.63312e+16

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

由于

1 个答案:

答案 0 :(得分:8)

因为它M_PI != real pi因为它无法表示,所以你从M_PI获得的是pi的近似值,它的切线就是你得到的。
编辑:以下内容:

printf("cos(M_PI / 2) = %.30f\nsin(M_PI / 2) = %.30f\n",
       cos(M_PI / 2), sin(M_PI / 2));

将打印

cos(M_PI / 2) = 0.000000000000000061232339957368
sin(M_PI / 2) = 1.000000000000000000000000000000

显示cos(pi / 2)非零 做分工将给出

1.63312393531953E16

这正是你得到的。