2015-04-10 16 views
6

Korzystam obecnie z usługi Azure DocumentDB do przechowywania danych produktów z cenami. Prawie wszystko działa całkiem dobrze, ale teraz mam problem, że moje wartości dziesiętne (System.Decimal) są obcięte podczas odczytu z DocumentDB.
Na przykład ta cena:Azure DocumentDB Dziesiętne obcięcie

 
Input Price: 25.1132356547854257645454 

zostanie obcięty do

 
DocumentDB Price: 25.113235654785 

Jak używamy synchronizacji mechanizm znaleźć zmiany cen, będzie to prowadzić do zmiany ceny, ponieważ nie jest taki sam cena już.
Nie mam pojęcia, jak zmienić zachowanie DocumentDB. W najgorszym przypadku musiałbym obciąć moje ceny wejściowe, aby zapobiec temu problemowi, ale wolałbym nie.

Dzięki za pomoc.

Odpowiedz

6

Azure DocumentDB używa IEEE floating point numbers według standardu JSON. Jest to wymagane, aby dane były przenośne na różnych platformach programistycznych i aplikacjach. Niestety może to prowadzić do obcinania dużych liczb całkowitych lub dokładniejszych liczb dziesiętnych, tak jak widzisz.

Aby obejść ten problem, należy rozważyć podzielenie liczby na numer dwuczęściowy, reprezentujący ciąg znaków, jeśli używasz tylko do zachowania równości lub przechowywania skróconej reprezentacji.

Mam nadzieję, że to pomoże.

+1

Dzięki za odpowiedź. Teraz przynajmniej wiem, co to powoduje. Myślę, że przy wprowadzaniu danych będę trzymać się obcięcia. To nie jest wielka sprawa. – lgrabarevic

Powiązane problemy