Sarthak Singh created AVRO-4108:
-----------------------------------
Summary: `DoubleAray` converts double to float on array add
Key: AVRO-4108
URL: https://issues.apache.org/jira/browse/AVRO-4108
Project: Apache Avro
Issue Type: Bug
Components: java
Affects Versions: 1.12.0
Reporter: Sarthak Singh
Consider a field within an avro schema
{code:avro}
{
"name": "SomeDoubleArray",
"type": {
"type": "array",
"items": "double"
}
},
{code}
Consider a record which fits that field
{code:java}
"SomeDoubleArray": [0.9, 0.8],
{code}
When deserializing a this record with the schema mentioned above, we get back
```
"SomeDoubleArray": [0.8999999761581421, 0.800000011920929],
```
The reason for this is:
[https://github.com/apache/avro/blob/dd01f97869e374d6427bec999afa089f760791ab/lang/java/avro/src/main/java/org/apache/avro/generic/PrimitivesArrays.java#L549-L554]
```
@Override
public void add(int location, Double o) {
if (o == null) {
return;
}
this.add(location, o.floatValue());
}
```
When adding a double, it gets its float value and copies that to the array. For
doubles values which cannot be represented as floats(.9 for example) we will
see precision loss.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)