Testing (in)equality against a const float

M

Michael Klatt

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.
 
M

Mike Wahler

Michael Klatt said:
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
 
P

Pete Becker

Mike said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top