Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Math.cos(90 * Math.PI/180) yield 6.123031769111... and not zero? [duplicate]

Tags:

I convert degrees to radians (degrees * Math.PI/180) but why does the following:

Math.cos(90 * Math.PI/180) 

yield 6.123031769111... and not zero?

I'm trying to perform 2D rotations uses matrixes and the results are completely out of whack.

like image 806
Sean Avatar asked Mar 11 '12 05:03

Sean


2 Answers

The output of

Math.cos(90 * Math.PI/180) 

is

6.123031769111886e-17 

Notice the e-17 at the end, which means that this number is 6.123 x 10-17. This is a number so vanishingly close to 0 that it's effectively 0. The reason that it's not identically 0 is due to rounding errors in the IEEE-754 double format which prevents you from getting an exact representation of π / 2 and causes minute rounding errors in the calculation of the cosine.

By the way - I was pretty surprised as well when the result came back starting with a 6! It's only after I looked at the very end that things started to make sense.

Hope this helps!

like image 172
templatetypedef Avatar answered Dec 03 '22 05:12

templatetypedef


6.123233995736766e-17 

is scientific notation for a very small number, close to zero. It is not exactly zero because of rounding errors and so forth.

like image 37
Karl Knechtel Avatar answered Dec 03 '22 04:12

Karl Knechtel