PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
3876 | 98/11/06 12:42:01 | RE(2):Truncate関数バグの原因 By M.M |
3875 | 98/11/06 10:54:20 | RE(1):PB5: Truncate関数がバグってるようです。 タイ国からのHELPです。 By あすかちゃんの父 |
3873 | 98/11/05 20:48:35 | PB5: Truncate関数がバグってるようです。 タイ国からのHELPです。 By red |
カテゴリ:PowerBuilderの不具合?
日付:1998年11月06日 12:42 発信者:M.M
題名:RE(2):Truncate関数バグの原因
「red」さん「あすかちゃんの父」さん、こん☆☆は。
>> PowerBuilderにて「数値の切り捨て機能[truncate(a,2)]を使うと、
>>時々予期していない変な数値が返ってきます。
>>例えば、\"10.20\"の値が\"10.19\"の様に変わってしまいます。
>>対応案を教えて下さい。
>
>> ・数値のデータ型はNUMBER型です。
>> ・データウィンドウ内の処理です。
>NUMBER型というと、Oracleのデータベースから検索してきた数値
>データをデータウィンドウで表示しているのですね?
>Oracleで問題のカラムの定義はどうなっていますか?
>また、\"10.20\"と表示されているカラムは、表示書式が\"0.00\"とか
>に定義されていませんか?
>
>これは推測ですが、おそらく浮動小数点の数値データの精度落ちが
>原因ではないでしょうか? (以下、略)
「あすかちゃんの父」さんのコメントに追記しますと、原因はまさしく
\"浮動小数点演算の精度誤差\"です。詳しく書くとキリが無いのですが、人間の扱う
10進数の演算を、コンピュータが扱う2進数で行う際に発生する必須の問題です。
(大学とかで情報処理の勉強をすると教えてくれます。「あすかちゃんの父」さんの
コメントに簡潔にまとめてあります)
データウィンドウ内部では演算をdouble型で行うため、カラムの型をdecimalにしても、
この問題は発生します。
(スクリプト上でdecimal型(10進数)で計算すれば誤差の問題はクリアできます)
パワーソフト側(今はアシスト社ですが)でも、この問題は認識しています。
詳しくは、パワーソフトHPの[Support]-[Trouble Shooting]-[PowerBuilder FAQ]
を参照して下さい。(対処方法も記載されています)
パワーソフトHP: http://www.powersoft.co.jp
PS.タイでPBを使っているのですか。素晴らしい!
以前に、多国籍企業で同一のシステムを動かすため、ツールとしてPBを検討しているという
相談を受けたことがあります。PBでは複数言語で使用するシステムの開発手法が確立してい
るので、今後はこういうプロジェクトが増えるかもしれないですね。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS DBMSクライアントソフトウェアなし
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS その他
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.