2013-01-04 146 views
0

我使用最新的C-Driver連接到MongoDB。當我插入一個浮點值,說1.0043820142745972,然後查詢回來,我似乎只得到1.004382!出於某種原因,所有浮點值都會被截斷爲小數點後的6位數字。MongoDB將截斷浮點值返回到6個小數點

這裏,我用它來查詢回來

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

,當我遍歷這些結果與mongo_cursor_next()bson_iterator_double訪問值的代碼。

如何獲取確切的數值,因爲它存儲在數據庫中?

+0

當我使用Umongo瀏覽集合時,我可以看到存儲的完整浮點值。只是不能使用C API檢索它。我也嘗試使用PHP,並且返回的值仍然被截斷,但是這次是13個小數點。 – airtruk

回答

3

您確實獲得了價值,這只是打印格式的問題。

打印出來的問題要完全精確的數值,我們可以看到,它是相同的值都表示:

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

默認情況下,浮點值都印有六位數字在C中的小數點後,所以當你看的時候價值是四捨五入的。