2012-03-16 11 views
2

まず、浮動小数値でインクリメントするために完全にサポートされていますか?

どのレベルの浮動小数点精度が維持されていますか?

+0

何か試しましたか?あなたは奇妙な行動に気付いたことがありますか?シェルとモンゴーのドライバがintと浮動小数点を扱う方法に関するいくつかの情報http://stackoverflow.com/questions/7682714/does-mongodb-support-floating-point-types – raffian

+0

申し訳ありません - 私は実際にはまだ問題を抱えていませんでしたしかし、それらがMySQLで起こる可能性があることを認識しており、ドキュメント内で浮動小数点のサポートについて何の言及も見られなかった –

答えて

5

MongoDBは浮動小数点値によるインクリメントをサポートしています。これにより、格納されている値が現在他の数値型の場合は浮動小数点に変換され、前の値が64ビットの非常に大きい整数の場合は丸め誤差が発生します。

浮動小数点数を含む標準の警告がすべて適用されます。 MongoDBは、WebブラウザのJavaScriptインタプリタと同様に、IEEE倍精度(64ビット)浮動小数点値を格納します。これらの値は53ビットの精度を持ちます。中間計算は80ビットの倍精度を使用して計算されますが、最終結果は常に64ビット倍精度浮動小数点値として格納されます。

1

非常に大きな数字を使用すると、シェルで問題が発生しました。 JavaScriptは切り捨てられるので、増分は起こらず、無限ループに入ります。問題を回避するために、NumberLong()を使用するように強制しなければなりませんでした。公平であるために、私は明示的に浮動小数点型を使用していませんでしたが、私はJavaScriptのデフォルトであると信じています - 私はそれを整数(カウント)として使用していました。

私が知る限り、これはJavaScript以外の言語のドライバでは問題ではありません。

関連する問題