mysql:12950
From: 忠犬 KEN <忠犬 KEN <ken_ken_1962@xxxxxxxxxx>>
Date: Thu, 27 Apr 2006 22:02:49 +0900
Subject: [mysql 12950] Re: decimal型、double型に関して
chukenと申します。 >decimal型、double型に関して質問させてください。 >値の大きい数値を扱おうと予定で、下記のクエリを実行しましたが >正確な数値が算出されませんでした。 >これは、有効桁数を超えているからなのでしょうか。 >また、正しい結果を得るには、どのようなクエリにすればよろしいのでしょう >か。 >ご教授いただけると幸いです。 >よろしくお願いいたします。 > >□クエリ >create table test10( >id int, >cnt decimal(35, 0) >); >insert into test10 (id, cnt) values (1, 1E+20 + 1); > >□結果 >1,100000000000000000000 > >□現象 >「1E+20 + 1」の「1」が足されていない。 指数指定で数値定数を指定しているため、内部的には浮動小数点で値が管理 されることになります。 浮動小数点に値を格納すると、広範囲の値を扱える半面、桁落ちが発生します。 今回のケースでは、decimal(35,0)と精度の高い列を用意しているのに、数値定数を 浮動小数点と解釈される形式で指定しているのが問題です。 「1E+20+1」という形式でなく、「100000000000000000000」という形式で指定で 指定してみてください。
12949 2006-04-27 20:04 ["MIURA, Takayuki // ] decimal型、double型に関して -> 12950 2006-04-27 22:02 ┣[忠犬 KEN <ken_ken_19] 12951 2006-04-27 22:36 ┃┗["MIURA, Takayuki // ] 12952 2006-04-27 23:57 ┗[SUGAWARA Hajime <sug] 12953 2006-04-28 15:06 ┗["MIURA, Takayuki // ]