By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,148 Members | 1,373 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,148 IT Pros & Developers. It's quick & easy.

Testing (in)equality against a const float

P: n/a
I've been looking through the FAQ and Googling previous threads on
c.l.c++ but I haven't seen this exact situation addressed. I
initialize variables of type float to a known invalid value (of type
const float), and at a later time I want to see if these variables are
still undefined:

#include <iostream>
int main()
{
const float undefined(-999); // valid only as an initial value

float f1(undefined);
if (f1 == undefined)
{
std::cout << "f1 has not been defined\n";
}

float f2(undefined);
f2 = 5;
if (f2 != undefined)
{
std::cout << "f2 has been defined\n";
}
return 0;
}

Expected output:

f1 has not been defined
f2 has been defined

From what I've read, I think (hope) that floating point comparisons
are okay in this case because I'm using the same type for each
variable in the comparisons and no arithmetic is involved.
Jul 22 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a

"Michael Klatt" <md*****@ou.edu> wrote in message
news:2c**************************@posting.google.c om...
I've been looking through the FAQ and Googling previous threads on
c.l.c++ but I haven't seen this exact situation addressed. I
initialize variables of type float to a known invalid value (of type
const float), and at a later time I want to see if these variables are
still undefined:

#include <iostream>
int main()
{
const float undefined(-999); // valid only as an initial value

float f1(undefined);
if (f1 == undefined)
{
std::cout << "f1 has not been defined\n";
}

float f2(undefined);
f2 = 5;
if (f2 != undefined)
{
std::cout << "f2 has been defined\n";
}
return 0;
}

Expected output:

f1 has not been defined
f2 has been defined

From what I've read, I think (hope) that floating point comparisons
are okay in this case because I'm using the same type for each
variable
The issue isn't the types, but the values.
in the comparisons and no arithmetic is involved.


Some value other than 'undefined' might evaluate 'close enough'
for == to return true. But I think this would only be the case
when 'undefined' is not an integral value. If I'm wrong about this,
I'm sure I'll be corrected.

-Mike
Jul 22 '05 #2

P: n/a
Mike Wahler wrote:

Some value other than 'undefined' might evaluate 'close enough'
for == to return true. But I think this would only be the case
when 'undefined' is not an integral value. If I'm wrong about this,
I'm sure I'll be corrected.


Integral values with absolute value < 2^bits, where 'bits' is the number
of bits in the mantissa, can be represented exactly in binary floating
point types.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 22 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.