DataContractSerializer conserva su signo al deserializar -0

Antes, DataContractSerializer y DataContractJsonSerializer descartaban el signo al deserializar la entrada "-0" como float o double. El comportamiento de ambos serializadores siempre ha sido correcto cuando la entrada era "-0.0", pero cuando la entrada era "-0", el signo se perdía. Este comportamiento es incoherente y da lugar a pérdidas de datos. Además, estos serializadores escriben un valor de cero negativo como "-0" durante la serialización.

Comportamiento anterior

Antes, el signo negativo se perdía al deserializar "-0" (pero no "-0,0") como float o double mediante DataContractSerializer.

Comportamiento nuevo

Ahora, el signo negativo se conserva al deserializar "-0" como float o double.

Versión introducida

  • .NET 6.0.11 (versión de mantenimiento)
  • .NET 7

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad binaria.

Motivo del cambio

El comportamiento anterior era incoherente y daba lugar a pérdidas de datos.

En la mayoría de los casos no es necesario realizar ninguna acción. Si su código se ha visto afectado por este error, este es un buen cambio. O quizá ya haya encontrado una solución a este error que seguramente este cambio no altere.

API afectadas