整数値または倍精度値を格納できる MYSQL のフィールドのタイプは何ですか?同じ列に整数を格納できることを意味します || ダブルス? このタイプは何ですか、またはどうすればそれを行うことができますか?
どんな努力も感謝します。
整数値または倍精度値を格納できる MYSQL のフィールドのタイプは何ですか?同じ列に整数を格納できることを意味します || ダブルス? このタイプは何ですか、またはどうすればそれを行うことができますか?
どんな努力も感謝します。
要件を満たすネイティブMySQLデータ型はありません。
一般に、DECIMALデータ型は法案に適合しますが、これは正確な10進値であり、float型の近似値ではありません。また、小数点が固定されているため、格納できる値の範囲はDOUBLEタイプよりも数桁小さくなります。
1つのオプションは、VARCHAR
列を使用し、値の文字表現を格納することです。
もう1つの(扱いにくい)オプションは、BIT(64)
列を使用することです。
しかし、これらのアプローチのいずれかを使用すると、どのタイプの値が格納されたかについて、何らかのタイプのインジケーターが必要になるようです。そして、これらのアプローチの両方にいくつかの欠点があります。大きな欠点の1つは、これらによって「無効な」値が保存される可能性があることです。
私が検討するアプローチ(この要件がある場合)は、2つの列を使用し、一方INTEGER
はもう一方DOUBLE
、優先順位を指定し、INTEGER列のNULL値が値がDOUBLE
列に格納されたことを表すことを許可することです。 。
コンピューターが数値を格納する方法を理解していないのではないかと思います。数値は整数であるか、浮動小数点数であるかのいずれかです。プロセッサの算術論理演算ユニット (ALU) には、それぞれに異なる回路があります。両方の番号を持つことはできません。
INT - 符号付きまたは符号なしの通常サイズの整数。符号付きの場合、許容範囲は -2147483648 ~ 2147483647 です。符号なしの場合、許容範囲は 0 ~ 4294967295 です。最大 11 桁の幅を指定できます。
DOUBLE(M,D) - 符号なしにできない倍精度浮動小数点数。表示長 (M) と小数点以下の桁数 (D) を定義できます。これは必須ではなく、デフォルトで 16,4 になります。ここで、4 は小数点以下の桁数です。DOUBLE の 10 進精度は 53 桁まで可能です。REAL は DOUBLE の同義語です。
double データ型を使用して、言語 (php、ja) でその値を整数として表示できます。
mysql にはそのようなデータ型はないと思います。おそらく、代わりに varchar が必要で、サーバー側のコード (php、java ...) で適切なデータ型にキャストすることもできますが、パフォーマンスのオーバーヘッドが発生する可能性があります。なぜこのような奇妙なデータ型の要件があるのか わかりません。この方法でデータを保存する必要がある場合は、データ型にフラグを立てるための列を追加することを検討してください。