Re: Comparing floating point values in Java
- From: Philipp <sicsicsic@xxxxxxxxxxx>
- Date: Sat, 30 Dec 2006 21:00:44 +0100
Arne Vajhøj wrote:
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));
}
}
Your example is not equivalent to the example in your link.
Yes I'm aware of that. The point in the link is that compiler optimization can lead to unequal floats even if exactly the same operations were performed on it. Is this also true for Java?
But in general you should not use == to compare floating
points in Java either.
Agree
Your example are just more simple than real life code.
No! (If I ask the question it's because I met this problem)
I was calculating an array of float values from some user input. But sometimes (rarely) the calculation cannot be done (this is correct behavior).
I then want to mark these values by setting them to -1 and treat this special case later on. So I later need to test for -1 in my array.
Philipp
.
- Follow-Ups:
- Re: Comparing floating point values in Java
- From: Eric Sosman
- Re: Comparing floating point values in Java
- References:
- Comparing floating point values in Java
- From: Philipp
- Re: Comparing floating point values in Java
- From: Arne Vajhøj
- Comparing floating point values in Java
- Prev by Date: Re: Object reference counting
- Next by Date: Re: Advantages and Disadvantages of using the Spring framework
- Previous by thread: Re: Comparing floating point values in Java
- Next by thread: Re: Comparing floating point values in Java
- Index(es):
Relevant Pages
|