| |||||||||||
double comparisons within an if stat Posted by nano (nano), 8 September 2006 Hi Graham,trying to compare two doubles which are equal and isn't passing within c++ like so why is this any ideas , Thanks val = 0.005000 valb = 0.01000 if (2.*val == valb) { return true; } valA=0.010000 valb=0.010000 Posted by admin (Graham Ellis), 8 September 2006 Yes ... you should never compare floats (or even doubles) to see if they're equal in C or C++ - because of routing errors. Internally, floating point types are held only to a certain accuracy and so "issues" creep in.A float example: Take the value 1.0 Divide it by 3.0 ... and you get 0.3333333 Multiply it by 3.0 and yoiu get 0.9999999 which is NOT equal to 1.0 Posted by nano (nano), 8 September 2006 thanks for that , so whats the work around in the above example to see if they are equal Posted by admin (Graham Ellis), 8 September 2006 It depends on what you're doing; sometimes you'll find that integers rather than floats would have been better in the first place, and at other times you might subtract one value from the other and see if the absolute value of the result is less that a threshhold.This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.
|
| ||||||||||
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho |