2015-04-10 7 views
6

В настоящее время я использую Azure DocumentDB для хранения данных о продуктах с ценами. Почти все работает нормально, но теперь у меня проблема, что мои десятичные числа (System.Decimal) усекаются при чтении из DocumentDB.
Например, эта цена:Azure DocumentDB Десятичное усечение

 
Input Price: 25.1132356547854257645454 

будет усечен в

 
DocumentDB Price: 25.113235654785 

Как мы используем механизм синхронизации, чтобы найти изменения цен, то это приведет к изменению цены, поскольку это не то же самое цена больше.
Я понятия не имею, как я могу изменить поведение DocumentDB. В худшем случае мне пришлось бы урезать свои исходные цены, чтобы предотвратить эту проблему, но я бы предпочел не делать этого.

Спасибо за помощь.

ответ

6

Azure DocumentDB использует IEEE floating point numbers по стандарту JSON. Это необходимо, чтобы данные были переносимыми на разных платформах и приложениях программирования. К сожалению, это может привести к усечению больших целых чисел или десятичных чисел с более высокой точностью, как вы видите.

Чтобы обойти это, рассмотрите разбиение номера на два части, представляющих строку, если вы используете только для равенства или сохраняете усеченное представление.

Надеюсь, это поможет.

+1

Спасибо за ответ. Теперь, по крайней мере, я знаю, что вызывает это. Я думаю, что я буду придерживаться усечения при вводе данных. Дело не в этом. – lgrabarevic