Azure DocumentDB十进制截断

时间:2015-04-10 11:43:58

标签: c# .net azure azure-cosmosdb

我目前正在使用Azure DocumentDB来存储价格的产品数据。几乎所有东西都工作得很好,但是现在我有一个问题,就是从DocumentDB读取时我的小数(System.Decimal)被截断了。
例如这个价格:

Input Price: 25.1132356547854257645454

将被截断为

DocumentDB Price: 25.113235654785

由于我们使用同步机制来查找价格变化,这将导致价格变化,因为它不再是相同的价格。
我不知道如何改变DocumentDB的行为。在最坏的情况下,我将不得不截断我的输入价格以防止这个问题,但我宁愿不这样做。

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

Azure DocumentDB根据JSON标准使用IEEE floating point numbers。这是必需的,以便数据可以跨不同的编程平台和应用程序移植。不幸的是,这可能导致截断大整数或更高精度的十进制数,就像你一直看到的那样。

要解决此问题,请考虑将数字分成两部分编号,如果您仅用于相等或存储截断的表示,则表示为字符串。

希望这有帮助。