web-dev-qa-db-ja.com

mysqlのfloat(2,2)とfloat()の違い

タイプfloat(2,2)の列を持つMySQLでテーブルを作成し、同じ値10を挿入しましたが、格納されている値は0.99であることがわかりました。

この背後にある理由は何ですか? MySQLでfloat(m、n)型の列を使用し、「m」と「n」が整数の場合、この列に値を格納するときは何に注意する必要がありますか?

40
ARUN P.S

float(2,2) は「2桁を使用し、そのうち2桁は小数点の後に使用される」ことを意味します。

したがって、-0.99から0.99に移動できます。この列に10を挿入することはできません。コンマの前に少なくとも2桁が必要です(したがって、float(4,2)またはfloat(2,0))。

MySQLでは、非標準の構文FLOAT(M、D)またはREAL(M、D)またはDOUBLE PRECISION(M、D)が許可されています。ここで、「(M、D)」は、合計で最大M桁の値を格納できることを意味し、そのうちD桁は小数点以下になる場合があります。たとえば、FLOAT(7,4)として定義された列は、表示されたときに-999.9999のようになります。 MySQLは値を格納するときに丸めを実行します。したがって、FLOAT(7,4)列に999.00009を挿入すると、おおよその結果は999.0001です。

73
Konerak

MySQLでは、非標準の構文FLOAT(M、D)またはREAL(M、D)またはDOUBLE PRECISION(M、D)が許可されています。ここで、「(M、D)」は、合計で最大M桁で値を保存できることを意味します。そのうち、D桁は小数点

16
Francis

float(M、D)ここでM = maxを念頭に置いてください。いや許容桁数(範囲1〜65)、D = no。小数点以下の桁数。だから、float(5,2)に変更してください。したがって、float(2,2)はno.10を入力する必要を満たしていません

3
firefly

MySqlには、FLOAT(M、D)のようなデータ型があります。ここで、Dは小数の数で、Mは総桁数(小数を含む)です。 65.構文がFLOAT(2,2)の場合、小数点以下2桁のみがあり、実数の桁はありません。したがって、10を追加したい場合は、FLOAT(5,2)のように使用できます。

1