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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.