私はMySQLを学んでおり、float
の範囲と精度に問題があります。 mannualからMySQLの浮動小数点型の範囲と精度の混乱
:
私は、このコマンドFLOATの場合、標準SQLは、括弧内のキーワードFLOAT次のビットに任意の精度の仕様(ただし、指数の範囲)を可能にします。 MySQLはこのオプションの精度仕様もサポートしていますが、精度値はストレージサイズを決定するためにのみ使用されます。精度が0〜23の場合、4バイトの単精度浮動小数点型(single-precision)FLOAT列が生成されます。 24〜53の精度は、8バイトの倍精度DOUBLE列になります。
create table test (f_a float(23));
私は4つの混乱を抱えているを使用してテーブルを作成:
- mannualで
but not the range of the exponent
の意味は何ですか? insert into test values (1e38);
を問題なく実行できます。私が38
の数字を入力しても、それはまだ動作します。ただし、39
の数字または1e39
は失敗します。では、この意味は何ですか?38
?f_a
のタイプ変換を調べるにはどうすればよいですか?desc test;
を実行すると、その列に38
桁の数字を挿入した後でも、タイプf_a
はまだfloat
です。- の範囲との精度はです。
優れた以下の答えが、また良いアドバイスがある*あなたがそうするための具体的な、通知理由がない限り*これらのデータ型を使用していません - これらの型は*近似値を格納し、精度よりも範囲を優先します。 'DECIMAL'を使うのが普通です。浮動小数点数と倍数は必然的に不正確です。お金を計算している場合は、「DECIMAL」データ型が唯一の許容タイプです。 –
@ Michael-sqlbot良い点!多くのtks Mr. Bot:D – spacegoing