объектив C косинус - PullRequest
       1

объектив C косинус

5 голосов
/ 08 августа 2011

У меня просто странная проблема с функцией cos в задаче c.У меня есть xcode 4.1.1 с установленным iOS 4.3 SDK.

Я вычисляю cos числа:

y= cos(x*M_PI/180)

это возвращает правильный ответ почти для всех чисел, кроме 90 градусов.

y=cos(90*M_PI/180)

у 6.12323e-17!что не правильно.должно быть 0.

NSLog показывает что-то другое:

operand=cos(operand * M_PI / 180);
NSLog(@"cos: %d", operand);

результат: cos: -832086752

Я не понимаю.Может кто-нибудь объяснить это, пожалуйста?

1 Ответ

11 голосов
/ 08 августа 2011

Арифметика с плавающей точкой не является точной. 90*M_PI/180 не совсем π / 2, потому что аппаратные средства с плавающей точкой не могут точно представлять трансцендентные числа.

Результат в NSLog объясняется тем, что operand - это (я предполагаю) float или double, и вы сказали NSLog интерпретировать его как int (%d). Вместо этого используйте %f или %g.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...