[ https://issues.apache.org/jira/browse/ARROW-401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15717215#comment-15717215 ]
Jacques Nadeau commented on ARROW-401: -------------------------------------- This is what I've used elsewhere before: {code} boolean evaluateEquality(Float f1, Float f2) { if(f1.isNaN()){ return f2.isNaN(); } if(f1.isInfinite()){ return f2.isInfinite(); } if ((f1 + f2) / 2 != 0) { return Math.abs(f1 - f2) / ((f1 + f2) / 2) < 1.0E-6; } else { return !(f1 != 0); } } {code} {code} @Override boolean evaluateEquality(Double f1, Double f2) { if(f1.isNaN()){ return f2.isNaN(); } if(f1.isInfinite()){ return f2.isInfinite(); } if ((f1 + f2) / 2 != 0) { return Math.abs(f1 - f2) / ((f1 + f2) / 2) < 1.0E-12; } else { return !(f1 != 0); } } } {code} > [Java] Floating point vectors should do an approximate comparison in > integration tests > -------------------------------------------------------------------------------------- > > Key: ARROW-401 > URL: https://issues.apache.org/jira/browse/ARROW-401 > Project: Apache Arrow > Issue Type: Bug > Components: Java - Vectors > Reporter: Wes McKinney > Assignee: Julien Le Dem > Priority: Blocker > > Floating point precision rears its ugly head: > {code} > Incompatible files > Different values in column: > Field{name=float64_nullable, type=FloatingPoint{2}, children=[], > layout=TypeLayout{[{width=1,type=VALIDITY}, {width=64,type=DATA}]}} at index > 1: 912.4140000000002 != 912.414 > 10:23:45.863 [main] ERROR org.apache.arrow.tools.Integration - Incompatible > files > java.lang.IllegalArgumentException: Different values in column: > Field{name=float64_nullable, type=FloatingPoint{2}, children=[], > layout=TypeLayout{[{width=1,type=VALIDITY}, {width=64,type=DATA}]}} at index > 1: 912.4140000000002 != 912.414 > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)