mysql:12951
From: "MIURA, Takayuki // NetConcierge " <"MIURA, Takayuki // NetConcierge " <t.miura@xxxxxxxxxx>>
Date: Thu, 27 Apr 2006 22:36:13 +0900
Subject: [mysql 12951] Re: decimal型、double型に関して
早速のご指摘ありがとうございます。 下記を試してみましたが、同じような結果になってしまいます。 やはり、桁落ちしているのでしょうか。 □クエリ create table test10( id int, cnt decimal(35, 0) ); insert into test10 (id, cnt) values (1, 100000000000000000000 + 1); □結果 1,100000000000000000000 > -----Original Message----- > From: 忠犬 KEN [mailto:ken_ken_1962@xxxxxxxxxx] > Sent: Thursday, April 27, 2006 10:03 PM > To: ml@xxxxxxxxxx > 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 // ]