2013-10-26 1 views
44

私は楽しいために作成していますが、それでも真剣にアプローチしたい、さまざまなテストをホストするサイト。これらのテストで私は統計データを収集したいと考えています。統計データを保存するには、DECIMAL、FLOATまたはDOUBLEが必要ですか?

一部のデータには、テストが完了した時点でのテストの完全性のパーセンテージが含まれます。私はテストのパーセンテージを簡単に計算することができますが、完成時のテストに関するさまざまな値を格納するので、真のデータを返すことを望みます。

ほとんどの値は、PHPの浮動小数点数であり、真の統計データが必要な場合は、MYSQLにFLOAT、DOUBLEまたはDECIMALとして格納する必要があります。

私は、AVG()LOG10()のようなMYSQLの機能と、TRUNCATE()を利用したいと思います。 MYSQLが挿入した値に基づいて真のデータを返すためには、データベース列の選択肢として何を使用するべきですか。

いくつかの数値は、10,10.89,99.09、または単純に0などの浮動小数点数になることがあります。 しかし、真実で有効な統計データが返されるようにしたいと思います。

このために浮動小数点演算を使用できますか?

EDIT

私は、これは一般的な質問です知っている、と私は広範囲に謝るが、私のような非数学者のために、また、私はMYSQLの専門家ではないよ、私はこの分野の専門家の意見を希望。

私は私の研究を行ったが、私はまだ問題については曇っていると感じている。私の質問が話題から外れているか、このサイトには適していない場合は再び謝ります。

答えて

57

このlinkあなたが探しているものを説明するうまい仕事です。

これら3つのタイプはすべて、次のパラメータ(サイズ、d)で指定できます。 sizeはStringの合計サイズ、dは精度を表します。たとえば、1234.567のような数値を格納するには、データ型をDOUBLE(7、3)に設定します。ここで、7は合計桁数、3は小数点以下の桁数です。

FLOATおよびDOUBLEは両方とも浮動小数点数を表します。 FLOATは単精度用であり、DOUBLEは倍精度用です。精度が0〜23の場合、4バイトの単精度浮動小数点型(single-precision)FLOAT列が生成されます。 24〜53の精度は、8バイトの倍精度DOUBLE列になります。 FLOATは小数点第7位まで、DOUBLEは14位まで正確です。

Decimalの宣言と機能はDoubleと似ています。しかし、浮動小数点値と小数値(数値)の間には大きな違いが1つあります。 DECIMALデータ型を使用して正確な数値を格納しますが、精度は必要ありませんが、正確で正確な値が必要です。 Decimal型は、最大65桁を小数点以下30桁で格納できます。

したがって、最も正確で正確な値の場合、Decimalが最適なオプションです。

+0

dありがとうございました。 – PEPLOVE

+6

このリンクには間違った情報がたくさんあります。私はそのアドバイスに従わないだろう。 –

+0

また、インデクシングやキーとして使用すると、格納された値が挿入された値と異なる場合がありますので、floatは望ましくありません。 –

1

リンガー:あなたが言及し引用したウェブサイトには、私に混乱させるいくつかの不正確な情報があります。ドキュメントでは、floatまたはdoubleを宣言すると、小数点は実際には数値に含まれていないことがわかりました。したがって、文字列内の文字の数ではなく、すべての数字が使用されます。

DOUBLE PRECISION(M、D)と比較すると、「M(D)」とは、M桁までの値を格納することができます.D桁は、 M 『精度』であり、D「はスケールである:ドキュメントへACC - http://dev.mysql.com/doc/refman/5.1/en/floating-point-types.html

はまた紛らわしいにおける命名法は、「表示されたとき小数点例えば、FLOAT(7,4)として定義された列は-999.9999ようになります。ウェブサイトは「精度」のために「スケール」を取ります。

私のようなsbが写真を撮ろうとしていた場合に役立つと思った。 私が間違っている場合は私を訂正してください。古くなったドキュメントを読んでいないことを祈ってください:)

4

単純に言えば、浮動小数点と倍精度は十進数ほど正確ではありません。金額関連の数字入力(通貨と給与)に小数点を使用することをお勧めします。 もう1つのポイントは次のとおりです。「=」、「<>」を使用して浮動小数点数を比較しないでください。浮動小数点数は正確ではないためです。

3

小数点データ(通貨)を格納しない限り、標準の浮動小数点型(FLOATまたはDOUBLE)を使用する必要があります。 DECIMALは固定小数点型なので、SUMのようなものを計算するときにオーバーフローする可能性があり、LOG10では間違って不正確になります。

実際には、バイナリ浮動小数点型については「正確性が低い」ものはありませんが、実際には、必要に応じてより正確(かつ高速)になります。 DOUBLEで移動してください。

1

10進数:固定小数点型(正確、値)。お金のような正確な精度を気にするときに使用してください。

例:salary DECIMAL(8,2)、8は桁数、2は小数点以下桁数です。浮動小数点型(目安値):salary-999999.99


999999.99にフロート、ダブル
の範囲であろう。 Floatは4バイトを使用して値を表し、Doubleは8バイトを使用して値を表します。

例:percentage FLOAT(5,2)、小数点の型と同じ、5は合計桁数、2は小数点以下桁数です。 percentageは、-999.99から999.99の間の値を格納します。

彼らはこの場合近似値であることに注意してください。33.0091/3.0 = 0.3333333...ような値が0.33(2小数の場所)として格納される

  • に値が丸め(33.01として格納されます小数点第2位)
関連する問題