FIX関数
皆さんこんにちはアドバンス情報システムの川島です。
FIX関数を用いて計算処理を行っているのですが、下記のような結果となります。
10000*0.9450 = 9449.99 x 正解は 9450.00 (小数点2桁以降を切り捨て)
処理の前後で内容を表示してみた結果
・ 10000*0.9450 = 9450.0000 FIX前
・ FIX(10000*0.9450,10,2) fix処理 (小数点2桁以降を切り捨て)
・ 9449.9900 fix処理
何かFIX関数の使用方法が違うのでしょうか?
よろしくお願いいたします。
-
'10000*0.9450 = '&Str(10000*0.9450,'10.2')&'
FIX(10000*0.9450,10,2) = '&Str(Fix(10000*0.9450,10,2),'10.2')
上記の式を、エラーコマンドで表示すると、どちらも9450.00になりました。川島さんの環境では、Fix(10000*0.9450,10,2)の値が9449.99になる という事で合っていますか。
-
アドバンス情報の川島です。
そうです。私の環境だと9449.99になります。
ただ色々とサンプルを作成すると問題なく、9450.0000になります。 該当のプログラムだけのようです。
-
アドバンス情報の川島です。
該当のプログラムを更に調査したところ、
10000*0.9450 の 0.9450は前画面よりのパラメータです。これを別の変数を作成してそこにコピーすると
問題なく計算できました。(モデルも同じものを使用しました。)
-
アドバンス情報の川島です。 ご回答ありがとうございます。
ただこのパラメータは印刷物に表示していますのでその内容自体はそのまま表示されていました。
どうも、小数点の3桁目が0のときおかしくなるようです。
9450.1204 とか
変数の何かが壊れていたのでしょうか? 何か確認することはできますでしょうか。
-
アドバンス情報の川島です。
色々確認してみました、別の方よりFIX関数内で計算を同時に行うとおかしくなるときがあると聞きましたので別変数を用意してその変数に計算のみを行いその後にその内容だけでFIXを行うと上手くいきました。 (そんなものですか?)
皆さんもこのような経験ありますでしょうか?
取り敢えず解決いたしました。 ご回答ありがとうございました。
サインインしてコメントを残してください。
コメント
5件のコメント