[前][次][番号順一覧][スレッド一覧]

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 // ]