Re: Comparing floating point values in Java



Philipp wrote:
I'm aware of problems (rounding, NaN etc) when comparing floating point values in computers.
In C++ this goes a bit further as you cannot compare with certitude floating point numbers even if you have made exactly the same operations on each of them (see eg: http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.18 )

My question: In Java, will unchanged values compare strictly true if equal?
Is it _guaranteed_ that the following code does output "true" on all JVMs?

example code:
public class Test {
public static void main(String[] args) {
float a = 1;
float b = 1;
System.out.println("a == b?: " + (a == b));
}
}

Most C++ implementations use IEEE floating point.

Java uses IEEE floating point.

You should expect the same floating point issues in
Java as in C++.

Your example is not equivalent to the example in your link.

I believe that the above should always write true in Java.

But in general you should not use == to compare floating
points in Java either.

Your example are just more simple than real life code.

Arne



.



Relevant Pages

  • Re: Comparing floating point values in Java
    ... when comparing floating point values in computers. ... In Java, will unchanged values compare strictly true if equal? ... In strictfp mode, the exact, bit-by-bit, result is predictable from the ...
    (comp.lang.java.programmer)
  • Re: Comparing floating point values in Java
    ... when comparing floating point values in computers. ... In Java, will unchanged values compare strictly true if equal? ... In strictfp mode, the exact, bit-by-bit, result is predictable from the ...
    (comp.lang.java.programmer)
  • Re: Comparing floating point values in Java
    ... In Java, will unchanged values compare strictly true if equal? ... float a = 1; ... I was calculating an array of float values from some user input. ...
    (comp.lang.java.programmer)
  • Re: Bug in Framework on Double arithmetic...?
    ... Floating point numbers cannot be represented exactly. ... There is an entire area of computing, called Numerical Analysis, that ... tolerance for error and compare using that. ... float or double) to represent monetary values. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: float to int conversion
    ... And what's the proper way of doing it, ... Floating point numbers are inherently inaccurate. ... Java supports those out of the ... you REALLY need it to be a float or double. ...
    (comp.lang.java.programmer)