ページの先頭です。
ここから本文です。

よくあるご質問(サポートFAQ)

【SystemDirector Enterprise for Batch】double型の丸め処理について

質問内容

DBのNUMBER(11,8)の項目をFileのdouble(3,8)へ直接転記する際に、 データの丸め処理が発生し、下記のように値が遷移しました。

 NUMBER(11,8)   double(3,8)
 123.12345678 ⇒ 123.123457

BatchClient利用ガイドを参照する限り、
下記のように型が遷移したと理解しました。

  DB        iot    File
 NUMBER(11,8) ⇒ double ⇒ double(3,8)

iot上でdouble型の中間変数を定義し、 123.123456789 という数値を与えた結果、
123.123457 となることを確認しました。

DBからFileへ直接転記する際に、
丸め処理を起こさないようにするにはどのようにしたらいいでしょうか?

回答内容

double型の丸めについてですが、扱える「最大小数桁が5ケタ」という仕様です。

今回のケースで NUMBER(11,8) のDBの値を、ファイルに出力するには、以下の
方法で処理する必要があります。
(1) ファイル定義ファイル上は、double型ではなく、char型で出力項目を定義 します。

そして、この項目のchar型のサイズは、符号1桁+整数桁+小数桁+小数点1桁
の大きさで指定します。
今回のケースでは、1+3+8+1=13になります。

(2) SDE for Batch Client上で製造する際には、この項目については直接転記
はせずに、処理式転記で以下のように記述します。

sprintf($$,"%13.8f", ここに入力DBの項目をドラッグ&ドロップ); ※

※Cのprintfの書式の仕様に従い、小数9ケタ目で四捨五入されます。
(例:DBの値が123.123456789の場合、ファイルには 123.12345679と出力
されます)

同様にファイル出力にて、doubleの小数桁を5ケタを超えて出力する場合は、
直接転記はできず、上記の方法をとる必要があります。


【確認済みのバージョン】全バージョン
【確認済みの対象OS】全OS

製品名カテゴリ

SystemDirector Enterprise for Java(バッチ)/C Batch

  • コンテンツID: 3150106012
  • 公開日: 2013年10月11日
  • 最終更新日:2013年10月11日

アンケート

サポート情報充実のためアンケートにご協力をお願いいたします。



コメント欄:
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。