計算フィールドで Truncate 関数を使用して正しい計算結果を取得する

PowerBuilder Tips

方法

データウィンドウ上で定義した計算フィールドで Truncate 関数を使用した際に、取得された結果が想定した値と異なる場合は、引数に定数を付加 (例 : truncate(x+0.0000001,n)) します。

本事象は計算フィールドの演算が double 型 (浮動小数点型) として扱われている事に起因し、浮動小数レジスタ (計算用) にロードされた実数はバイナリの記憶領域における最大限の精度で表現されるためで、PowerBuilder でのみ発生する現象ではありません。

例えば、2.05 は double 型では 2.04999999999999968 のような形で保持されています。このデータに対して truncate(2.05, 2) が実行されると 2.04 という結果になります。

 

Tips情報

プロダクト :PowerBuilder

バージョン :2019R3

Tips 一覧を見る
PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?