446,389 Members | 1,881 Online Need help? Post your question and get tips & solutions from a community of 446,389 IT Pros & Developers. It's quick & easy.

# float and double question

 P: n/a 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
5 Replies

 P: n/a "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? 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

 P: n/a 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" 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

 P: n/a 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" 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

 P: n/a 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" 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" 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

 P: n/a 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. 