遊び心で作っているのですが、やはり真剣に取り組みたいのは、様々なテストを行うサイトです。このサイトでは、さまざまなテストを行い、統計的なデータを集めたいと考えています。
データの中には、時間を計ることでテストの完走率がわかるものもあります。テストのパーセンテージは簡単に計算できますが、完了時のテストに関するさまざまな異なる値を保存するため、真のデータが返されるようにしたいのです。
そこで質問なのですが、もし真の統計データを得たいのであれば、MYSQLにFLOAT、DOUBLE、DECIMALのいずれかの形式で保存すべきなのでしょうか?
MYSQL の AVG()
や LOG10()
などの関数や TRUNCATE()
を利用したいと思っています。MYSQL が、挿入した値に基づいて真のデータを返すためには、データベースのカラムとして何を選択すればよいのでしょうか。
10、10.89、99.09、あるいは単に 0 のような浮動小数点数である場合もあれば、そうでない場合もあるためです。 しかし、私は、真の有効な統計データを返したいのです。
浮動小数点演算に頼っていいのでしょうか?
EDIT
これは一般的な質問であり、広くお詫び申し上げますが、私のような非数学者のために、また私はMYSQLの専門家ではないので、この分野の専門家の意見が欲しいのですが、いかがでしょうか。
一応調べてはいるのですが、やはり判断が鈍っているような気がします。また、私の質問が本題から外れていたり、このサイトにふさわしくなかったらお詫びします。
このリンクは、あなたが探しているものを説明するのに良い仕事をしています。 以下は、その内容です。
これら3つの型は、すべて次のパラメータ(size, d)で指定することができます。ここで、sizeは文字列の合計サイズ、dは精度を表す。例:1234.567のような数値を格納する場合、DatatypeをDOUBLE(7, 3)に設定します。7は全体の桁数、3は小数点の後の桁数です。
FLOATとDOUBLE、どちらも浮動小数点数を表します。FLOATは単精度、DOUBLEは倍精度の数値を表します。0から23までの精度の場合、4バイトの単精度のFLOATカラムとなります。24から53の精度の場合、8バイトの倍精度DOUBLEカラムになります。FLOATは小数点以下約7桁まで、DOUBLEは小数点以下14桁までの精度です。
Decimalの宣言と機能はDoubleと同様です。しかし、浮動小数点値と10進数(数値)値には大きな違いが1つあります。DECIMALデータ型は、正確な数値を保存するために使用します。10進データ型は、小数点以下30桁で、最大65桁まで保存できます。
**最も正確で精密な値を得るには、Decimal が最適です。
リンガーです。あなたが言及し、引用したウェブサイトは、私が混乱させたいくつかの不正確な情報をIMOしています。ドキュメントには、floatやdoubleを宣言するとき、小数点以下は数値に含まれないと書いてありました。つまり、文字列の文字数ではなく、使用されるすべての桁数ということです。
ドキュメントを比較してみましょう。 DOUBLE PRECISION(M,D)....ここで、"(M,D) "は、合計M桁までの値を格納できること、そのうちD桁は小数点の後であることを意味します。例えば、FLOAT(7,4)と定義された列は、表示すると-999.9999となる" http://dev.mysql.com/doc/refman/5.1/en/floating-point-types.html
また、この名称は誤解を招く恐れがあります。ドキュメントによると、M は 'precision' で、D は 'scale' ですが、ウェブサイトは 'scale' を 'precision' と解釈しています。
私のようなSBが画像を取得しようとしている場合に役立つと思った。 もし私が間違っていたら訂正してください。)