凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 47277
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

工学分野では1と1.00には大きな違いがあります。
それは有効桁数という代物です。

この有効桁数、システムに載せようとすると妙に大変なのですが、 皆さんどうされているのでしょうか?

DBに有効桁数を保持できる数値型があれば便利なのですが、 マニュアルを見る限りどうも見つからない。

方法論としては文字列型で格納しておくという手もあるのですが、 DB上での大小比較などで不都合があるので、通常の数値型+有効桁情報という 2つのカラムを利用する手段が無難そうです。

プログラム言語的にもあまり有効桁数って意識されていない気がしますね。 JavaのBigDecimal型 などは有効桁数を管理できるようになってはいますが…。

投稿日時 : 2007年11月9日 15:40
コメント
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    まさる
    Posted @ 2007/11/09 15:46
    今のPJではやっぱり有効桁情報を別カラムに持っていますね。
    過去のPJでは...あれ?考慮されてなかったような?
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    裏口
    Posted @ 2007/11/09 16:38
    COBOLの時代は良かった(遠い目

    やっぱ「通常の数値型」+「有効桁数」しかないでしょうね。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    凪瀬
    Posted @ 2007/11/09 17:08
    やっぱりそうするしかないのでしょうかねぇ。
    なんとなく、有効桁情報を扱えるデータ型がないことが不思議に思えたのですよ。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    かずくん
    Posted @ 2007/11/09 17:46
    decimal型は?
    SQL Server, MySQL, firebirdは使えそう。
    PostgreSQL, SQLiteにはないみたい。
    ほかは調べてません。

    decimal型は一応SQL92(SQL2)で規定されてる型どす。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    凪瀬
    Posted @ 2007/11/09 18:07
    DECIMALは固定の有効桁と認識しています。
    DECIMAL(20,10)と宣言されたカラムに1と1.00を格納した場合に、
    それぞれ有効桁が1および3と管理して欲しいわけです。

    こうした可変の有効桁を扱うのであれば、別途カラムを持つしかないのかな、と。
    入力フォーマットによる有効桁情報が欠落するのではないかということなのです。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    Mr.T
    Posted @ 2007/11/09 18:51
    Mr.Tです、こんにちは。
    私も最初かずくんのように「あれ?」と感じたんですが、
    よくよく考えてみれば、「有効桁という属性値」はもてるけど、レコード内のフィールド値としてはもてないんですね。
    別途カラムを持つ...あ、SQLServer2005なら計算列を持つってことができるんで、
    もしかしたらそんなんで解決できませんかね?>適当
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    Mr.T
    Posted @ 2007/11/09 18:56
    あ、やっぱりダメか。
    1.00と1を同じフィールド内で持つのは現状だと
    文字型くらいしかないですもんねぇ...orz
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    かつのり
    Posted @ 2007/11/09 19:44
    文字だとソートに困りますよね。

    整数部は数値、小数部は文字列で個別にカラムで管理すれば、
    ソートもしやすくないですかね。
    評価もしやすそうだし。
    order by 整数,小数みたいな感じで。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    凪瀬
    Posted @ 2007/11/09 19:56
    0.1と0.01の場合は?
    小数部がどういう数字になるんでしょうか?
    1と01ってわけにはいかんでしょうし。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    まりり
    Posted @ 2007/11/09 20:25
    そこでユーザ定義型ですよ。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    かつのり
    Posted @ 2007/11/10 0:52
    0.1と0.01の場合は、整数部がそれぞれ0、
    小数部が1と01で格納ですね。

    1と01なら文字型の辞書順でソートすると01の方が小さいから、
    うまい事ソートできるし、
    あとは適当に取得時に加工すれば良いような気がします。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    凪瀬
    Posted @ 2007/11/10 0:58
    小数部は文字列型かw
    ユーザ定義ってどこまでできるのか知らないなー。
    今度調べてみよう。
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    裏口
    Posted @ 2007/11/12 16:23
    なんか発展してたwww

    Fortran時代の実数表現なんか参考になるかと(古w
    http://ruby.gfd-dennou.org/products/ruby-dcl/ruby-dcl-doc/misc1/node5.html
    http://docs.hp.com/ja/B3906-90007/ch02s02.html
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    凪瀬
    Posted @ 2007/11/13 12:15
    このあたりの浮動型は固定有効桁なので使えません。
    指数部、実数部に加え、有効桁部を備えた数値表現形式であることが求められます。
    かつ、DBに格納可能である必要があるという。

    DB上で比較演算が可能であることが望ましいですね。
    いまのところ、整数部カラム(NUMBER)+小数部カラム(VERCHAR)+有効桁カラム(NUMBER)方式が有望か。
    しかし、演算する際に整数部で大小を比較した上に小数部の比較も行わないといけないってのが面倒ですよねぇ…
  • # re: DBに有効桁数情報を持った数値を格納するにはどうしたらよいか?
    裏口
    Posted @ 2007/11/13 16:41
    >このあたりの浮動型は固定有効桁なので使えません。

    いや、参考にする程度って意味でしたが・・・。

    >指数部、実数部に加え、有効桁部を備えた数値表現形式であることが求められます。

    その通りですね。
    特に小数点以下の数字って2進数はキツイ。
    8 4 2 1 1/2 1/4 1/8 ・・・
    統計処理で分散なんか求めた場合、ばらつきが大きいと簡単にアンダーフロー起こしたり。
    # 必然的に4倍精度実数にせざるを得なかったが精度はイマイチ。
  • # <url>http://www.getlifeinsurancequotes.net/|lifeinsurance</url> utnnz <url>http://www.insuranceslife.net/|life insurance</url> 31140 <url>http://www.autosinsurance4u.com/|low car insurance</url> vhnnyp
    Cordelia
    Posted @ 2012/10/11 1:47
    <url>http://www.getlifeinsurancequotes.net/|lifeinsurance</url> utnnz <url>http://www.insuranceslife.net/|life insurance</url> 31140 <url>http://www.autosinsurance4u.com/|low car insurance</url> vhnnyp
  • # <url>http://www.insurancequotesmi.net/|car insureance</url> 28729 <url>http://www.ohautoinsurancequotes.com/|buy auto insurance online</url> cihyy <url>http://www.locateonlinecolleges.com/|online colleges</url> 868941 &
    Cheyanna
    Posted @ 2012/10/25 1:43
    <url>http://www.insurancequotesmi.net/|car insureance</url> 28729 <url>http://www.ohautoinsurancequotes.com/|buy auto insurance online</url> cihyy <url>http://www.locateonlinecolleges.com/|online colleges</url> 868941 <url>http://www.getacheapcoverage.com/|car insurance quotes</url> 3893
タイトル
名前
Url
コメント