« パーティショニングでできるこんなこと(履歴化) | トップページ | C/Sシステムのウェブ化でサーバが減る? そんなわけないじゃん »

2014.02.11

Currency型の掘り下げをしてみる

当ブログは地味なりに長らくさらされているので、それなりに需要のある記事がいくつかある。
TOP3でいうと
 ●MS Accessの限界~
 ●VA/VE提案
 ●Currency型を考えてみる
の3本である。
MS ACCESSの限界については記事自体が10年前のものであり、対象がAccess2000という古いバージョンのものなので、一度最近のAccessについての評価をやり直したいと思っている。しかし、ちょっとこれは時間が欲しい。なにせ私自身が現在はACCESSをほとんど使ってないもので(^^;

で、今回は案外と流入が多いCurrency型に関する記事をもう少し深掘りしてみたい。

ところでこのCurrency型が検索されている、ということ自体が実は結構謎である。
私自身は一度これは『使わない/使っちゃいけない型』という自己完結をしており、おそらくこれからも使うことはないだろうと思っていた。
しかし毎日一定量の検索にさらされているわけなので、これはいったいどんなニーズがあるのだろうか、と考えてみることとした。

単純にCurrency型の使い道がわかんない、という私のようなケースがあるだろう。
あるいはCurrency型とDouble型のどっちを使っていいかわからない、ということもあるだろう。
DoubleではなくCurrencyを使え、というアドバイスがあちこちであるようだ。確かに浮動小数点では端数計算における誤差が発生するリスクが高いので、それは正しい。

しかし、本気で誤差を吸収したいのであればCOBOLの"9(7)V99"のような形式が指定できる形式を使ったほうが私には安全に思える。
PosgreSQLであればNUMERIC/DECIMALであるし、OracleであればNUMBERであるし、InformixならDECIMALである。
もっとも、この考え方は物理的なデータ中心で考えたことから発生しているのだとも思う。
いちいち有効精度を考えながら型の宣言をするよりも、ざっくりとCurrency/Money型で宣言してしまったほうが、プログラミングにおける抽象性は増す。
その意味ではプログラムをする側としては正しいハンガリアンのように、お金を扱っているデータなんだよ、と宣言することは意義のあることである。
問題は抽象化した通貨型がガチガチの型指定をしたものと同等の挙動を保証できるのか? というところが鍵なんだろう。
最初に記事を書いたときはPostgreSQLのCurrency型は、公式から利用を非推奨されていたためCurrency型への拒否反応が募ったのだが、今は
「基本はDECIMALで書くべきだと思うけど、プロジェクト内で徹底できていればCurrencyでもいいんじゃね?」
という結論に落ち着いている。

こんな内容で、検索した皆さんの需要は満たされるだろうか(^^;?

|

« パーティショニングでできるこんなこと(履歴化) | トップページ | C/Sシステムのウェブ化でサーバが減る? そんなわけないじゃん »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/59104542

この記事へのトラックバック一覧です: Currency型の掘り下げをしてみる:

« パーティショニングでできるこんなこと(履歴化) | トップページ | C/Sシステムのウェブ化でサーバが減る? そんなわけないじゃん »