PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
16846 01/12/28 09:57:02 RE(1):PB7.0: Mod関数について By TTTK
16841 01/12/26 18:29:47 PB7.0: Mod関数について By asano01

カテゴリ:PowerBuilderの開発環境
日付:2001年12月28日 09:57 発信者:TTTK
題名:RE(1):PB7.0: Mod関数について


>例:
>Decimal{3} amari
>Decimal{3} data_a = 32.400
>Decimal{3} data_b =  1.080

>amari = MOD(data_a,data_b)

>余りを求めるので、結果は0になるはずです。
>にもかかわらず、1.080が余りとして返されます。
>DataWindowで計算カラムで求めても同様です。

>(中略)

>※この現象は、PB7 & PB5 にて発生しています。
>  NT4.0SP5の環境です。

試してみたところ、PB6.5でも同様でしたので、PBに共通した仕様(?)のようですね。
ところで、Mod(32.400, 1.080)の値は1.080ではなくて1.079999……になっていませんか?
どうやらMod()は、引数がDecimal型であっても内部ではDoubleに変換して計算しているのではないかという気が
します。
そのため、一部の小数では誤差が生じる、と。

根本的な解決ではないですけど、PB側だけで対処するのであれば
  Mod(32.400 * 1000, 1.080 * 1000)
で正しい結果が得られます。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser InternetExplorer4.X

Server SoftWare

OS HP-UX
DBMS Oracle 8.0
WebServer (記載なし)

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