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月26日 10:08 発信者:n.mibu
題名:RE(2):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」で検索)

早速、RESして頂き有難うございます。(しかもこんな遅くに)
一応 「Trincate」で検索して参考にさせて頂きますが、当方では「Ceilingに相応する自作の外部関数を作成」
して対応しようと思います。(でも、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.