我使用最新的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
访问该值。
如何在存储在数据库中时获取确切的值?
答案 0 :(得分:3)
你确实得到了你的价值,这只是打印格式的问题。
将有问题的值打印到完全精确,我们看到两个表示的值相同:
Prelude Text.FShow.RealFloat> FF 1.0043820142745972
1.00438201427459716796875
Prelude Text.FShow.RealFloat> FF 1.004382
1.00438201427459716796875
默认情况下,浮点值在C中的小数点后面打印六位数,因此当您查看它时,该值将四舍五入。