2012-02-26 24 views
0

SQLiteの列の1つでSUMを呼び出すと、正確な答えが返されないのはなぜですか?相続人は私が何を意味するか:SQLite SUM関数の丸め誤差 - android

は、私は今、これらは右17567.59まで追加する必要があり

row1  8362.82 
row2  +18837.42 
row3  +7294.12 
row4  +73.23 
___________________ 
     17567.59 

を合計する私の列に4行を考えてみましょうか?よく私のsum17567.6を返します。これは大きな問題のようには聞こえませんが、正確な小数点が必要です。数字が大きくなるにつれて、さらにラウンドします。誰もがこれに対する解決策を説明することができますか?ありがとう。

答えて

0

浮動小数点の代わりに整数として値を格納します。

+0

[SQLiteはデータ型を信じていません](http://www.sqlite.org/datatype3.html)、私はすべてが文字列として最終的に格納されていることを理解しています。 –

+0

はい、それはすべて文字列として格納されています。しかし、私はあなたが何を示唆しているのか理解していると思います。小数点なしの数値を保持し、加算して小数点以下2桁をスライドさせます。問題はidkであり、それを行う方法です – 725623452362

+0

finalResult = result/100 –

0

私は小数点以下1桁を維持するのではなく、整数に丸めていた点を除いて、同じ丸め問題が発生しました。 sum()の代わりにtotal()を使用しました。 the documentationから

合計の結果()が常に浮動小数点値です。 の結果NULL以外の入力がすべて整数の場合、sum()は整数値です。 sum()への のいずれかの入力が整数でもNULLでもない場合、sum()は の浮動小数点値を返します。これは真の和の近似値になります。

私の場合は、整数と浮動小数点値が混在しているため、これは私の場合の問題点については説明していません。しかし、違いのために試してみることにしました。また、多くの場合に役立つ、NULLではなくすべてのNULLを合計します。