Skip to content

Commit fb1446b

Browse files
authored
Update bson-kotlinx/src/main/kotlin/org/bson/codecs/kotlinx/JsonBsonEncoder.kt
1 parent 817845e commit fb1446b

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

bson-kotlinx/src/main/kotlin/org/bson/codecs/kotlinx/JsonBsonEncoder.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,14 @@ internal class JsonBsonEncoder(
100100
else -> {
101101
val decimal = BigDecimal(content).stripTrailingZeros()
102102
when {
103-
decimal.scale() > 0 ->
104-
if (decimal.abs() <= DOUBLE_MAX_VALUE) {
105-
encodeDouble(primitive.double)
103+
decimal.scale() > 0 -> {
104+
val abs = decimal.abs()
105+
if ((decimal.signum() == 0 || abs >= DOUBLE_MIN_VALUE) && abs <= DOUBLE_MAX_VALUE) {
106+
encodeDouble(decimal.toDouble())
106107
} else {
107108
writer.writeDecimal128(Decimal128(decimal))
108109
}
110+
}
109111
INT_MIN_VALUE <= decimal && decimal <= INT_MAX_VALUE -> encodeInt(decimal.toInt())
110112
LONG_MIN_VALUE <= decimal && decimal <= LONG_MAX_VALUE -> encodeLong(decimal.toLong())
111113
else -> writer.writeDecimal128(Decimal128(decimal))

0 commit comments

Comments
 (0)