2015-04-10 17 views
6

Attualmente sto utilizzando Azure DocumentDB per archiviare i dati di prodotto con i prezzi. Quasi tutto funziona abbastanza bene, ma ora ho il problema che i miei decimali (System.Decimal) vengono troncati durante la lettura da DocumentDB.
Per esempio, questo prezzo:Azure DocumentDB Decimal Truncation

 
Input Price: 25.1132356547854257645454 

verrà troncato in

 
DocumentDB Price: 25.113235654785 

Come stiamo usando un meccanismo di sincronizzazione per trovare le variazioni di prezzo, questo si tradurrà in una variazione di prezzo in quanto non è la stessa prezzo più
Non ho idea di come sia possibile modificare il comportamento di DocumentDB. Nel peggiore dei casi dovrei troncare i miei prezzi di input per prevenire questo problema, ma preferirei non farlo.

Grazie per l'aiuto.

risposta

6

Azure DocumentDB utilizza IEEE floating point numbers per lo standard JSON. Questo è necessario in modo che i dati siano trasferibili su diverse piattaforme di programmazione e applicazioni. Sfortunatamente, questo può portare al troncamento di numeri interi grandi o numeri decimali di precisione più alti come stai vedendo.

Per ovviare a questo problema, prendere in considerazione la possibilità di suddividere il numero in un numero in due parti, che rappresenta una stringa se si utilizza solo per l'uguaglianza o se si memorizza la rappresentazione troncata.

Spero che questo aiuti.

+1

Grazie per la risposta. Ora almeno so cosa lo causa. Penso che rimarrò con il troncamento quando inserirai i dati. Non è un grosso problema. – lgrabarevic