- PR -

ADO.NETでの数値データの扱い

投稿者投稿内容
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-02-05 09:54
お使いのデータベースは何ですか?

私はデータベースに関しての知識はあまりないので調べてみたところ、SQLServerもOracleもAccessも列の型にdoubleというのはなさそうですが・・・
tabou
常連さん
会議室デビュー日: 2002/07/15
投稿数: 39
投稿日時: 2004-02-05 13:10
半端な発言をして申し訳有りません。
本日データテーブルの二種類のフィールド型 float、decimal(doubleは有りません)
について三種類のfloat、decimal、doubleのキャストを行ってみましところ
下記のようになりました。(データベースはSqlServer です)

テーブルの
フィールド    キャスト   キャスト    キャスト
float      × float   × decimal   ○ double
decimal     × float   ○ decimal   × double  

上記の○がOkでした。

結論は上記の○の組み合わせを使えばよいと言うことのようです。
お騒がせいたしました。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-02-05 14:22
.NETで構造体(値型)を扱う時にはボックス化(ボクシング)というものを意識しなければなりません。
dr["pub_id"]やdr["pub_no"]として取得した値はObject型として受け取っているわけですからボックス化された状態なわけです。
decimalをボックス化したオブジェクトを、doubleとしてアンボックス化することはできませんし、その逆もしかりです。
それどころかfloatをボックス化したものをdoubleとしてアンボックス化することもできません。(doubleの方が精度が高いにも関わらず、です)
つまりSQLServerのfloatはdoubleの精度ということでしょうね。

スキルアップ/キャリアアップ(JOB@IT)