検索
ホームページデータベースmysql チュートリアルMySQL の float、double、および 10 進浮動小数点型の違いを要約する

#mysql ビデオ チュートリアルこのコラムでは、MySQL の 3 つの浮動小数点型の違いを要約しています。

MySQL の float、double、および 10 進浮動小数点型の違いを要約する

## 各浮動小数点型のストレージ サイズと範囲は、次の表で計画されています。

TypeSizeRange (符号付き) 範囲 (符号なし)目的==float==4 バイト(-3.402 823 466 E 38, -1.175 494 351 E-38), 0, (1.175 494 351 E-38, 3.402 823 466 351 E 38) 0, (1.175 494 351 E-38、3.402 823 466 E 38)単精度浮動小数点値==double==8 バイト(-1.797 693 134 862 315 7 E 308, -2.225073858507 2014E-308), 0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E 308) 0 , (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E 308)倍精度浮動小数点値10 進数 10進数(M,D)の場合、M>Dの場合はM 2、それ以外の場合はDです。 2MとDの値に依存します。 M と D の値 10 進数値

MySQL のこれら 3 つの型はすべて浮動小数点型ですが、それらの違いは何でしょうか? ?

  1. float 浮動小数点型は == 単精度浮動小数点 == 数値を表すために使用され、
  2. double 浮動小数点型は == 倍精度浮動小数点を表すために使用されますpoint == Value

<strong>ここで「単精度とは何ですか、倍精度とは何ですか?」と尋ねたい友人もいるはずです。簡単に見てみましょう!</strong>

バイト (バイト) は 8 ビットを占めることがわかりますね!

float 単精度記憶浮動小数点型の場合==4x8=32 ビット長== であるため、float 単精度浮動小数点数はメモリ内で 4 バイトを占有し、32 ビット バイナリで記述されます。

次に、倍精度浮動小数点数は、小数点記憶型は == 8x8 =64 ビット長 == であるため、倍精度浮動小数点数はメモリ内で 8 バイトを占有し、64 ビット バイナリで記述されます。計算を通じて、64 ビットはより多くの仮数を取得できます!

仮数部 : == は小数点以下の桁数です==

したがって、ここでの精度は主に == 仮数部の桁数に依存します==部分、したがって、IEEE 2 進浮動小数点数算術標準に従って、 が計算と結論に使用されます:

float の単精度小数部分は、次の 6 までの精度しかありません。桁に加えて小数点の前に 1 桁を加えます。つまり、有効桁は 7 桁です。

倍精度小数部分は、小数点以下 15 桁と小数点の前に有効な 1 桁を加えた精度になります。 、これは 16 桁です。

最後に、小数点以下の桁の長さを区別します。長いほど正確になります!

double と float の違い:

  1. メモリ占有バイト数が異なります。単精度メモリは4バイト、倍精度メモリは8バイトを占有します。
  2. 有効桁数が異なります(仮数部) 単精度小数点以下 7 桁、倍精度小数点以下有効数字 16 桁が有効です
  3. 値の範囲が異なり、IEEE 標準に従って計算されます!
  4. プログラムの処理速度が異なります一般に、CPU による単精度浮動小数点数の処理は、倍精度浮動小数点数の処理よりも高速です。

double と float の相互の長所と短所:

float 単精度

利点: float 単精度は、一部のプロセッサでは倍精度よりも高速で、必要なスペースは double 倍精度の半分のみです

欠点: ただし、値が非常に大きいか小さい場合、不正確になります。

double double precision

利点: double と float と比較して、double はより高い精度が必要であり、仮数部は 16 桁まで可能ですが、float は 7 桁しか持ちません。仮数精度

欠点: Double double 精度はメモリを消費し、float 単精度の 2 倍高速です! double の演算速度は float よりもはるかに遅くなります。double は float よりも仮数の数が多いため、計算にオーバーヘッドが発生する必要があります。 !

double と float の使用シナリオを選択する方法!

まず第一に: メモリと速度を節約するために、単精度が使用できる場合は倍精度を使用しないでください。 up 演算!

float: もちろん、小数部分が必要で、精度要件がそれほど高くない場合は、float 単精度浮動小数点型を選択することをお勧めします!

double: なぜなら小数点以下の精度が高いため、倍精度が使用されます。高速な数学計算、科学計算、衛星測位計算などでは、実際にはプロセッサ上の倍精度型の方が単精度型よりも高速です。複数回の反復で計算の精度を維持する必要がある場合、または大きな値の数値を操作する場合、このような場合には倍精度が最適な選択です。

これだけのことを言うのは、実際には小数点以下の桁数が問題です!

==double と float の概要:==

float は少ないことを表します。小数点以下の桁数: Double を使用すると、より多くの小数点以下の桁数を表現でき、より正確になります。非常に簡単です。状況に応じて自分で選択するだけです!

double と float の後ろの長さ m と d は何を表しますか?

double(m,d ) と float( m,d) ここでの m,d は何を表しますか?多くの友人もよくわかりません! 説明を続けましょう

実際、前の整数 int(n) と同様に、これらの型にも追加のパラメータがあります: 表示幅 m と d の数を持つ小数点

例: float(7,3) ステートメントは、表示される値が 7 桁を超えないことを規定しています。同様に、小数点以下 3 桁と double

MySQL の定義時にも当てはまります。テーブル フィールドの unsigned 修飾子と zerofill 修飾子は、float、double、および 10 進数のデータ型でも使用でき、その効果は int データ型と同じです。上記と同じなので、ここでは詳しく説明しません。

== 概要:==

MySQL ステートメントで実際にテーブル フィールドを定義するとき、

float(M,D) unsigned の M はフィールドの数を表します。使用できる桁数。D は小数点を表します。後の小数点以下の桁数。符号なしは、負の数値が許可されないことを意味します。

double(M,D) 符号なしの M は、小数点以下の桁数を表します。 D は小数点以下の桁数を表します

==Note:== M>=D!

小数タイプ

==1.同じストレージに 10 進数==

を導入する 範囲値は通常、10 進数よりも使用するスペースが少なくなります。Float はストレージに 4 バイトを使用し、double は 8 バイトを使用します。

そして、10 進数は M と D の値に依存するため、10 進数の方が使用するスペースが少なくなります。

実際のエンタープライズレベルの開発では、金額 (3888.00 元) を格納する必要があるフィールドがよくありますが、このとき、データ型は 10 進数を使用する必要があります。 MySQL データベースでは、10 進数を使用するための構文は次のとおりです。 10 進数(M,D)、ここで、 M の範囲は 165 です。 D の範囲は 030 です。 また、D は M より大きくすることはできません。

==2. 最大値==

データ型が 10 進数のフィールドに格納できる最大値/範囲は何ですか? 例: 10 進数(5,2)、このフィールドには -999.99 ~ 999.99 を格納でき、最大値は 999.99 です。 つまり、Dは小数部の長さを表し、(M-D)は整数部の長さを表します。

==3.ストレージ== [理解] 10 進数型のデータ格納形式は、9 桁の 10 進数を 4 バイトとして格納します

(公式説明: DECIMAL 列の値は、10 進数 9 桁を 4 バイトに詰め込むバイナリ形式を使用して格納されます) )。

設定された桁数が 9 の倍数ではない可能性があります。公式は、比較のために次の表も提供しました:

##001–21 3–425–637–94
残りの桁 バイト数
==テーブルは何を意味しますか? 例: ==

1. フィールド 10 進数 (18,9)、18-9=9 なので、整数部と小数部は両方とも 9 で、両辺はそれぞれ 4 バイトを占めます。 2. フィールド 10 進数 (20,6)、20-6=14、小数部は 6、上の表の 3 バイトに対応、整数部は 14、14-9=5、つまり 4 バイトテーブル内の 3 バイトに加えて

したがって、通常、小数を設定するときは、常に 10 進数タイプを使用します!!


Small case 1

mysql> drop table temp2;
Query OK, 0 rows affected (0.15 sec)

mysql> create table temp2(id float(10,2),id2 double(10,2),id3 decimal(10,2));
Query OK, 0 rows affected (0.18 sec)

mysql>  insert into temp2 values(1234567.21, 1234567.21,1234567.21),(9876543.21, 
    -> 9876543.12, 9876543.12);
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from temp2;
+------------+------------+------------+
| id         | id2        | id3        |
+------------+------------+------------+
| 1234567.25 | 1234567.21 | 1234567.21 |
| 9876543.00 | 9876543.12 | 9876543.12 |
+------------+------------+------------+
2 rows in set (0.01 sec)

mysql> desc temp2;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | float(10,2)   | YES  |     | NULL    |       |
| id2   | double(10,2)  | YES  |     | NULL    |       |
| id3   | decimal(10,2) | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
3 rows in set (0.01 sec)复制代码

small case 2

mysql> drop table temp2;
Query OK, 0 rows affected (0.16 sec)

mysql> create table temp2(id double,id2 double);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into temp2 values(1.235,1,235);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into temp2 values(1.235,1.235);
Query OK, 1 row affected (0.03 sec)

mysql> 
mysql> select * from temp2;
+-------+-------+
| id    | id2   |
+-------+-------+
| 1.235 | 1.235 |
+-------+-------+
1 row in set (0.00 sec)

mysql> insert into temp2 values(3.3,4.4);
Query OK, 1 row affected (0.09 sec)

mysql> select * from temp2;
+-------+-------+
| id    | id2   |
+-------+-------+
| 1.235 | 1.235 |
|   3.3 |   4.4 |
+-------+-------+
2 rows in set (0.00 sec)

mysql> select id-id2 from temp2;
+---------------------+
| id-id2              |
+---------------------+
|                   0 |
| -1.1000000000000005 |
+---------------------+
2 rows in set (0.00 sec)

mysql> alter table temp2 modify id decimal(10,5);
Query OK, 2 rows affected (0.28 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> alter table temp2 modify id2 decimal(10,5);
Query OK, 2 rows affected (0.15 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from temp2;
+---------+---------+
| id      | id2     |
+---------+---------+
| 1.23500 | 1.23500 |
| 3.30000 | 4.40000 |
+---------+---------+
2 rows in set (0.00 sec)

mysql> select id-id2 from temp2;
+----------+
| id-id2   |
+----------+
|  0.00000 |
| -1.10000 |
+----------+
2 rows in set (0.00 sec)复制代码

関連する無料学習の推奨事項: mysql ビデオ チュートリアル##

以上がMySQL の float、double、および 10 進浮動小数点型の違いを要約するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjuejinで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQLのストアドプロシージャとは何ですか?MySQLのストアドプロシージャとは何ですか?May 01, 2025 am 12:27 AM

ストアドプロシージャは、パフォーマンスを向上させ、複雑な操作を簡素化するためのMySQLのSQLステートメントを事前に拡大します。 1。パフォーマンスの改善:最初のコンピレーションの後、後続の呼び出しを再コンパイルする必要はありません。 2。セキュリティの改善:許可制御を通じてデータテーブルアクセスを制限します。 3.複雑な操作の簡素化:複数のSQLステートメントを組み合わせて、アプリケーションレイヤーロジックを簡素化します。

クエリキャッシュはMySQLでどのように機能しますか?クエリキャッシュはMySQLでどのように機能しますか?May 01, 2025 am 12:26 AM

MySQLクエリキャッシュの実用的な原則は、選択クエリの結果を保存することであり、同じクエリが再度実行されると、キャッシュされた結果が直接返されます。 1)クエリキャッシュはデータベースの読み取りパフォーマンスを改善し、ハッシュ値を使用してキャッシュされた結果を見つけます。 2)単純な構成、mysql構成ファイルでquery_cache_typeとquery_cache_sizeを設定します。 3)SQL_NO_CACHEキーワードを使用して、特定のクエリのキャッシュを無効にします。 4)高周波更新環境では、クエリキャッシュがパフォーマンスボトルネックを引き起こし、パラメーターの監視と調整を通じて使用するために最適化する必要がある場合があります。

他のリレーショナルデータベースでMySQLを使用することの利点は何ですか?他のリレーショナルデータベースでMySQLを使用することの利点は何ですか?May 01, 2025 am 12:18 AM

MySQLがさまざまなプロジェクトで広く使用されている理由には、次のものがあります。1。複数のストレージエンジンをサポートする高性能とスケーラビリティ。 2。使いやすく、メンテナンス、シンプルな構成とリッチツール。 3。豊富なエコシステム、多数のコミュニティとサードパーティのツールサポートを魅了します。 4。複数のオペレーティングシステムに適したクロスプラットフォームサポート。

MySQLのデータベースアップグレードをどのように処理しますか?MySQLのデータベースアップグレードをどのように処理しますか?Apr 30, 2025 am 12:28 AM

MySQLデータベースをアップグレードする手順には次のものがあります。1。データベースをバックアップします。2。現在のMySQLサービスを停止します。3。MySQLの新しいバージョンをインストールします。アップグレードプロセス中に互換性の問題が必要であり、Perconatoolkitなどの高度なツールをテストと最適化に使用できます。

MySQLに使用できるさまざまなバックアップ戦略は何ですか?MySQLに使用できるさまざまなバックアップ戦略は何ですか?Apr 30, 2025 am 12:28 AM

MySQLバックアップポリシーには、論理バックアップ、物理バックアップ、増分バックアップ、レプリケーションベースのバックアップ、クラウドバックアップが含まれます。 1. Logical BackupはMySqldumpを使用してデータベースの構造とデータをエクスポートします。これは、小さなデータベースとバージョンの移行に適しています。 2.物理バックアップは、データファイルをコピーすることで高速かつ包括的ですが、データベースの一貫性が必要です。 3.インクリメンタルバックアップは、バイナリロギングを使用して変更を記録します。これは、大規模なデータベースに適しています。 4.レプリケーションベースのバックアップは、サーバーからバックアップすることにより、生産システムへの影響を減らします。 5. Amazonrdsなどのクラウドバックアップは自動化ソリューションを提供しますが、コストと制御を考慮する必要があります。ポリシーを選択するときは、データベースサイズ、ダウンタイム許容度、回復時間、および回復ポイントの目標を考慮する必要があります。

MySQLクラスタリングとは何ですか?MySQLクラスタリングとは何ですか?Apr 30, 2025 am 12:28 AM

mysqlclusteringenhancesdatabaserobustnessnessnessnessnessnistandistributiondistributingdataacrossmultiplenodes.itesthendbenginefordatareplication andfaulttolerance、保証highavailability.setupinvolvesconfiguringmanagement、data、ssqlnodes、carefulmonitoringringandpe

MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?Apr 30, 2025 am 12:27 AM

MySQLのデータベーススキーマ設計の最適化は、次の手順を通じてパフォーマンスを改善できます。1。インデックス最適化:一般的なクエリ列にインデックスを作成し、クエリのオーバーヘッドのバランスをとり、更新を挿入します。 2。テーブル構造の最適化:正規化または反通常化によりデータ冗長性を削減し、アクセス効率を改善します。 3。データ型の選択:Varcharの代わりにINTなどの適切なデータ型を使用して、ストレージスペースを削減します。 4。パーティション化とサブテーブル:大量のデータボリュームの場合、パーティション化とサブテーブルを使用してデータを分散させてクエリとメンテナンスの効率を改善します。

MySQLのパフォーマンスをどのように最適化できますか?MySQLのパフォーマンスをどのように最適化できますか?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance、soflowthesesteps:1)properindexingtospeedupqueries、2)useexplaintoanalyzeandoptimize Queryperformance、3)AductServerContingSettingStingsinginginnodb_buffer_pool_sizeandmax_connections、4)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール