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

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