2015-04-10 16 views
6

Tôi hiện đang sử dụng Azure DocumentDB để lưu trữ dữ liệu sản phẩm với giá. Gần như tất cả mọi thứ đang làm việc khá tốt nhưng bây giờ tôi có vấn đề mà số thập phân của tôi (System.Decimal) đang được cắt ngắn khi đọc từ DocumentDB.
Ví dụ mức giá này:Cắt tài liệu Azure thập phân

 
Input Price: 25.1132356547854257645454 

sẽ được rút ngắn thành

 
DocumentDB Price: 25.113235654785 

Như chúng ta đang sử dụng một cơ chế đồng bộ để tìm những thay đổi giá cả, điều này sẽ dẫn vào một sự thay đổi giá như nó không phải là như nhau giá nữa.
Tôi không biết làm thế nào tôi có thể thay đổi hành vi của DocumentDB. Trong trường hợp xấu nhất tôi sẽ phải cắt giảm giá đầu vào của tôi để ngăn chặn vấn đề này, nhưng tôi không muốn.

Cảm ơn bạn đã trợ giúp.

Trả lời

6

Azure DocumentDB sử dụng IEEE floating point numbers theo tiêu chuẩn JSON. Điều này là bắt buộc để dữ liệu có thể di động trên các nền tảng và ứng dụng lập trình khác nhau. Thật không may, điều này có thể dẫn đến việc cắt ngắn các số nguyên lớn hoặc số thập phân chính xác cao hơn như bạn đang thấy.

Để giải quyết vấn đề này, hãy xem xét chia nhỏ số thành số hai phần, biểu thị dưới dạng chuỗi nếu bạn chỉ sử dụng cho bình đẳng hoặc lưu trữ biểu diễn cắt ngắn.

Hy vọng điều này sẽ hữu ích.

+1

Cảm ơn bạn đã trả lời. Bây giờ ít nhất tôi biết điều gì gây ra điều này. Tôi nghĩ rằng tôi sẽ dính với cắt ngắn khi nhập dữ liệu. Nó không phải là vấn đề lớn. – lgrabarevic

Các vấn đề liên quan