2015-04-10 7 views
6

Ich verwende derzeit die Azure DocumentDB, um Produktdaten mit Preisen zu speichern. Fast alles funktioniert ganz gut, aber jetzt habe ich das Problem, dass meine Dezimalstellen (System.Decimal) beim Lesen von DocumentDB abgeschnitten werden.
Zum Beispiel des Preis:Azure DocumentDB Decimal Truncation

 
Input Price: 25.1132356547854257645454 

wird in

 
DocumentDB Price: 25.113235654785 

abgeschnitten Da wir einen Synchronisationsmechanismus verwenden, Preisänderungen zu finden, dies in eine Preisänderung zur Folge haben wird, da es nicht das Gleiche Preis mehr.
Ich habe keine Ahnung, wie ich das Verhalten der DocumentDB ändern kann. Im schlimmsten Fall müsste ich meine Input-Preise kürzen, um dieses Problem zu vermeiden, aber das möchte ich lieber nicht.

Danke für Hilfe.

Antwort

6

Azure DocumentDB verwendet IEEE floating point numbers gemäß JSON-Standard. Dies ist erforderlich, damit die Daten über verschiedene Programmierplattformen und Anwendungen übertragen werden können. Leider kann dies dazu führen, dass große ganze Zahlen oder Dezimalzahlen mit höherer Genauigkeit abgeschnitten werden, wie Sie sehen.

Um dies zu umgehen, sollten Sie die Zahl in eine zweiteilige Zahl aufteilen, die als Zeichenfolge dargestellt wird, wenn Sie nur die Gleichheit verwenden oder die abgeschnittene Darstellung speichern.

Hoffe, das hilft.

+1

Danke für die Antwort. Jetzt weiß ich wenigstens, was das verursacht. Ich denke, ich bleibe bei der Eingabe der Daten bei der Kürzung. Es ist nicht so schlimm. – lgrabarevic

Verwandte Themen