467,910 Members | 1,786 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,910 developers. It's quick & easy.

float and double question

Pat
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?

Thanks. Pat
Jul 22 '05 #1
  • viewed: 1652
Share:
5 Replies
"Pat" <Pa*@Pat.com> wrote...
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?


Unless there is an overflow (resulting in infinity values), the
expression

float(X) == float(Y)

should always evaluate 'true' if X == Y evaluates 'true'.

Also, if you attempt to compare float(X) and Y [or X and float(Y)],
both will be converted back to 'double' and the result will most
definitely depend on values of X and Y, compiler, and hardware.

Victor
Jul 22 '05 #2
Pat,

I did some experiments, I found that float(X) is rounding on my MVC++
compiler, so if X=0.499999999, float(X) = 0.5, but if X = 0.511111111,
float(X) = 0.51111, so we get both > and < situations.

If X == Y, then always float(X) == float(Y)
dave
"Pat" <Pa*@Pat.com> wrote in message news:40**********@rain.i-cable.com...
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?

Thanks. Pat

Jul 22 '05 #3
Ian
Dave Townsend wrote:
Pat,

I did some experiments, I found that float(X) is rounding on my MVC++
compiler, so if X=0.499999999, float(X) = 0.5, but if X = 0.511111111,
float(X) = 0.51111, so we get both > and < situations.
Think about this for a moment; abs(0.5-499999999) !=
abs(0.5-0.511111111). 7 orders of magnitude difference.

Ian
If X == Y, then always float(X) == float(Y)
dave
"Pat" <Pa*@Pat.com> wrote in message news:40**********@rain.i-cable.com...
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?

Thanks. Pat


Jul 22 '05 #4

Ian,

Sorry, not following what you said.

I'm saying that because the float type casting operation rounds, in some
cases
it will round down and some it will round up, so we get both < and > for the
examples.

dave

"Ian" <no***@nowhere.com> wrote in message
news:10***************@drone5.qsi.net.nz...
Dave Townsend wrote:
Pat,

I did some experiments, I found that float(X) is rounding on my MVC++
compiler, so if X=0.499999999, float(X) = 0.5, but if X = 0.511111111,
float(X) = 0.51111, so we get both > and < situations.

Think about this for a moment; abs(0.5-499999999) !=
abs(0.5-0.511111111). 7 orders of magnitude difference.

Ian
If X == Y, then always float(X) == float(Y)
dave
"Pat" <Pa*@Pat.com> wrote in message news:40**********@rain.i-cable.com...
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?

Thanks. Pat


Jul 22 '05 #5
Pat wrote:
Give two double-typed variable X and Y.

If (X==Y) is true,

then how about the following results:
(float(X) > float(Y))?
(float(X) < float(Y))?
(float(X) >= float(Y))?
( X > float(Y) )?
( X < float(Y) )?
( X == float(Y) )?

Will the results be independent of compliers and OS platforms?

Thanks. Pat


No, they will not be independent of compilers, nor of OS platforms.
Floating point numbers, the underlying machine instructions and
registers that manage them are different. You will get subtle
differences, especially as you increase in precision. We have trouble on
a regular basis with floating point numbers in our software, compounded
when we port to different platforms.

Floating point numbers are good to use in some situations, but you
REALLY want to avoid comparing them whenever possible.

David Logan
Jul 22 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

11 posts views Thread by Christian Christmann | last post: by
54 posts views Thread by Andy | last post: by
5 posts views Thread by guy | last post: by
1 post views Thread by Bruno van Dooren | last post: by
8 posts views Thread by abdul_n_khan | last post: by
60 posts views Thread by Erick-> | last post: by
3 posts views Thread by hantechs | last post: by
116 posts views Thread by Dilip | last post: by
13 posts views Thread by Shirsoft | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.