0

最新の C-Driver を使用して MongoDB に接続しています。1.0043820142745972 などの float 値を挿入してからクエリを返すと、1.004382 しか得られないようです! 何らかの理由で、すべての float 値が小数点以下 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 の小数点以下 6 桁で出力されるため、値を見ると丸められます。

于 2013-01-04T03:13:46.527 に答える