Le 16/01/2012 08:05, Kevin Fishburne a écrit : > On 01/16/2012 01:43 AM, Kevin Fishburne wrote: >> Why would I get the runtime error "Mathematic error" in this function: >> >> Public Function Distance(x1 As Single, y1 As Single, x2 As Single, y2 As >> Single) As Single >> Return Abs(Sqr((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))) >> End >> >> The values of the variables are: >> >> ?x2& ""& x1& ""& x2& ""& x1& ""& y2& ""& y1& ""& y2& >> ""& y1 >> >> 174.248779296875 2.40799128109576E-41 174.248779296875 >> 2.40799128109576E-41 146.759170532227 7.19552647834628E+27 >> 146.759170532227 7.19552647834628E+27 >> >> Using GAMBAS 3, revision unknown. I'm recompiling now to see if it makes >> a difference, but please let me know what this error means and what >> could cause it. >> > > I changed the first line (old one) to the second: > > 'Return Abs(Sqr((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))) > Return Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) > > and it gives me no problems. Seems like I really screwed up the distance > calculation, but even so this may be a bug so hopefully I've contributed > to a solution. Still curious of course as to what the error might mean. > Maybe it should just say "You suck at math." :) >
You get a mathematic error because of an overflow. (y2 - y1) * (y2 - y1) cannot be expressed by a Single in your example. The "^" operator deals with Float internally, so you don't get an error. Anyway, to compute a distance, you can use the Hyp() or the Mag() function. It will be faster. Regards, -- Benoît Minisini ------------------------------------------------------------------------------ RSA(R) Conference 2012 Mar 27 - Feb 2 Save $400 by Jan. 27 Register now! http://p.sf.net/sfu/rsa-sfdev2dev2 _______________________________________________ Gambas-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/gambas-user
