Adrien Sanchez created AVRO-4125: ------------------------------------ Summary: Cast issue when adding Double to DoubleArray in 1.12.0 Key: AVRO-4125 URL: https://issues.apache.org/jira/browse/AVRO-4125 Project: Apache Avro Issue Type: Bug Components: java Reporter: Adrien Sanchez Attachments: image-2025-03-21-11-43-13-178.png
Hi, I recently upgraded to Avro 1.12.0, and I have an issue with Double objects when adding them to an array. I have an Avro schema in which I have a field that represents geospatial coordinates : {code:java} { "name": "coordinates", "type": [ "null", { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": "double" } } } ], "default": null }{code} This was when handled in Avro 1.11.4. However, when migrating to Avro 1.12.0, the double items in my array came with some unexpected extra digits. Digging into the problem, it looks like the array is handled in 1.12.0 as *DoubleArray* from the *PrimitivesArrays* class. In this class, the add method is implemented this way : {code:java} public void add(int location, Double o) { if (o != null) { this.add(location, (double)o.floatValue()); } } {code} The cast to double primitive type from the float value comes with modifying the precision. Here is an example of how the precision is modified : !image-2025-03-21-11-43-13-178.png! Here, I expect to add "2.64" in my array, but "2.640000104904175" is actually added in the end. -- This message was sent by Atlassian Jira (v8.20.10#820010)