0

我使用最新的 C-Driver 连接到 MongoDB。当我插入一个浮点值时,比如 1.0043820142745972,然后再查询它,我似乎只得到 1.004382!由于某种原因,所有浮点值都被截断为小数点后 6 位。

这是我用来查询它的代码

bson_init(query);
bson_append_double(query, "column", value);
bson_finish(query);

当我使用 遍历结果时,mongo_cursor_next()我使用bson_iterator_double.

如何获取存储在数据库中的确切值?

4

1 回答 1

3

您确实可以收回您的价值,这只是打印格式的问题。

以完全精度打印出有问题的值,我们看到两种表示形式的值相同:

Prelude Text.FShow.RealFloat> FF 1.0043820142745972
1.00438201427459716796875
Prelude Text.FShow.RealFloat> FF 1.004382
1.00438201427459716796875

默认情况下,浮点值在 C 中以小数点后六位打印,因此当您查看该值时会对其进行四舍五入。

于 2013-01-04T03:13:46.527 回答