表題の通りですが、下記のSQLで数字の1をInsertし、phpadminで確認するとなぜか0.9という数字が入っています。
insert into table_test (volume) values(1)
1.0が入るものと考えているのですが、なぜ0.9になるのかわかりません。
定義上は volume double(1,1) not null としています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
double(1,1)
だと、有効な桁数が1桁で小数点以下が1桁、つまり小数部分だけ1桁保持できるが整数部分は保持できない、ということになってしまいます。
そのため、1のようにdouble(1,1)
で表現できない値をinsertすると、表現できる範囲(-0.9~0.9)に丸められてしまうのでしょう。
double(2,1)
などとするのが良いかと思います。
投稿2017/03/01 03:39
編集2017/03/01 03:40総合スコア2019
0
ベストアンサー
そもそも double(1,1) だと、小数点以下第1位しか保持できません。(全体で1桁、うち小数点以下1桁なので、整数部がない)
ですから 0.9 になるのでは。
※でも insert into table_test (volume) values (1) がエラーになるはずですが
投稿2017/03/01 03:43
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 03:53
2017/03/01 03:55 編集
2017/03/01 04:07
2017/03/01 04:28
0
double(1,1) で定義した意図は?
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
...
M は桁数の合計で、D は小数点以下の桁数です。
投稿2017/03/01 03:46
総合スコア16415
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 03:53