PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
5269 | 99/02/26 21:04:17 | RE(4):切り上げ誤差の件、対処方法がわかりました(たぶん) By M.M |
5259 | 99/02/26 18:19:04 | RE(3):PB5.0.03: 少数部を切り上げしたいのですが... By M.M |
5245 | 99/02/26 10:08:51 | RE(2):PB5.0.03: 少数部を切り上げしたいのですが... By n.mibu |
5241 | 99/02/25 23:04:12 | RE(1):PB5.0.03: 少数部を切り上げしたいのですが... By M.M |
5239 | 99/02/25 20:28:30 | PB5.0.03: 少数部を切り上げしたいのですが... By n.mibu |
カテゴリ:PowerBuilderの不具合?
日付:1999年02月25日 23:04 発信者:M.M
題名:RE(1):PB5.0.03: 少数部を切り上げしたいのですが...
「n.mibu」さん、こんばんは。
>題名にもありますように、数値の少数部について「切り上げ」を行いたいのですが、
>不正に切上げられてしまいます。
>具体的には、Number型の2項目 \'suryo\' と \'tanka\' を使用してDWの計算カラムに
> \'Ceiling(suryo * tanka)\'と記述しているのですが、
>例1)suryo = 5.0 tanka = 3 のときは \'15\' を返します。(正常)
>例2)suryo = 5.5 tanka = 4 のときに \'23\' を返すときがある(正しくは \'22\')
>
>当方の見解として、例2)のときに、一旦、小数部の計算が行われる為、Number型の数値が
>内部的に \'22.000000・・・\'と保持されていて、少数部の\'000・・・\' が不正な切り上げの原因
>ではないかと思っているのですが...
>
>ただし、混乱させて申し訳ないのですが、実際に当方で起っている内容は、
>例3)suryo = 1.2 tanka = 420 のときは \'504\' を返します。(正常)
>例4)suryo = 1.1 tanka = 420 のときに \'463\' を返します。(正しくは \'462\')
>
>です。こうなるとさっぱり原因がわかりません。何か情報がございましたらどうかよろしく
>お願いします。
おそらく、2進数での浮動少数点演算の数値誤差が原因です。(PBのバグではありません)
これがよく問題になるのは、データウィンドウの計算カラムにTruncate関数を記述して
「切り下げ」を行うときです。
「切り上げ」が問題になったのは、私の記憶している限り始めてではないかと思います。
対策は...難しいですね。切り下げ時の対処については、過去ログを参照して下さい。
何かのヒントになるかもしれません。(キーワード「Truncate」で検索)
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS Oracle SQL*Net 2.3
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.