On 02/15/2013 11:39 AM, Kene Meniru wrote:
I am trying to calculate the coordinates at the end of a line. The length
and angle of the line are given and I am using the following formula:

x = (math.sin(math.radians(angle)) * length)
y = (math.cos(math.radians(angle)) * length)

The following are sample answers in the format (x, y) to the given
length/angle values of the line:

120/0  = (0.0, 25.0)
120/89 = (24.9961923789, 0.436310160932)
120/90 = (25.0, 1.53075794228e-15)
120/91 = (24.9961923789, -0.436310160932)

Why am I getting a string number instead of the expected answer  for 120/90
which should be (25.0, 0.0). This happens at all multiples of 90 (i.e. 180
and 270)


Floating point calculations on a computer (ANY computer, and ANY programming language) can *never* be expected to be exact! (Think about 1/3 , PI, and sqrt(2) for instance.) The values written out as

1.53075794228e-15

is the (scientific notation) representation of .00000000000000153075794228.  Is 
that not close enough to zero for your purposes?  (Or is it that you don't 
understand the 'e-15' portion of the output?)


--
Dr. Gary Herron
Department of Computer Science
DigiPen Institute of Technology
(425) 895-4418

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to