2010年6月18日金曜日

数値の取り扱い

現在、ほぼ最終段階(公開予定 7月1日)まで開発が進んでいます。

・・が、数値の取り扱いに頭を悩ましています。

例えば Oracle で NUMBER(10, 4) で定義されているフィールドがあるとします。
結果画面でデータの入力が可能になっていますが、そこで "123456.12345" と小数点の桁あふれが発生する数値を入力します。

手持ちの Oracle.DataAccess だと、自動で四捨五入が行なわれ、結果としては "123456.1235" となります。
値の設定は System.Data.Common.DbParameter 任せにしているため、小数点の桁数の管理など行なっていないがために発生している問題です。

また、例えば NUMBER(38, 0) で定義されているフィールドがあるとします。
このように桁が大きい場合、OCI-22053 が発生し、データ表示が行なえません。
桁の大きい数値を取り扱うとき、は OracleDataReaderクラスの、GetOracleDecimal などを利用しないといけないようです。

と、問題点をつらつらと書きましたが、プロバイダ依存の要素が強く、且つ、すべてのプロバイダでテストすることは不可能なため、現在は制限事項とするしかないかと考えていますm(_ _)m

0 件のコメント:

コメントを投稿