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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.