Welcome to the world of floating point math ! Floating point numbers are usually expressed as binary numbers internally, which are not always exact. In this case 0.2 may be stored as 0.1999999. Multiply that with 60 and you get something a bit smaller than 12. Use the fix funtion and you get 11.
Similarly 145.2 - 145 <> 0.2, when using floating point numbers. So you mat get the correct result using straight 0.2, but not using 145.2 - 145. Here is an explanation (Delphi based, but same principle): http://www.guidogybels.net/index.html?floats.html Kind regards Uffe Kousgaard www.routeware.dk ----- Original Message ----- From: "Paul Smith" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Tuesday, January 18, 2005 8:08 AM Subject: MI-L When 12 = 11 ( Error maybe in mapbasic/mapinfo) Hi List, I have been working on some of my own tools and in a equation working with Lat's and Long's I have found something odd. What I was trying to do was take a float and give the result of the float without the preceding integer ie. 145.2 = 0.2 (Remove the 145) Then multiply the result by 60 ie. 0.2 x 60 = 12 But wait fo it: In mapbasic 12 = 11 Yes you all think I am crazy but here is my proof. My equation is: print fix((abs(fltvariable)-fix(abs(fltvariable)))*60) subtituting fltvariable for 145.2 (makes not different if you use any other number as long as it has 0.2 as the decimal) Type this equation into the mapbasic window and even try them on paper yourself. print fix((abs(145.2)-fix(abs(145.2)))*60) Working through the equation we would have print fix((abs(145.2)-fix(abs(145.2)))*60) = 11 ? print fix((145.2-fix(145.2))*60) = 11 ? print fix((145.2-145)*60) = 11 ? print fix(0.2*60) = 12 Correct print fix(12) = 12 Correct The answer should be 12 but mapbasic is giving 11 as the result for the first 3 equations. It this a bug that should be fixed or been fixed? Paul Smith --------------------------------------------------------------------- List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 14895
