ExcelInput(ExcelPOIInput)コンポーネントで取得した値が表示されている値と異なります

Excel系コンポーネントを使用すると、小数を持つ数値がExcelソフトとASTERIA Warp側で異なった値で表示されることがあります。
例えばExcelソフトで「543.5」と表示される値が ExcelInput(ExcelPOIInput)コンポーネントでは「543.4999999999999」のように取得されることがあります。

原因は浮動小数点数で10進数の小数を正確に格納できないことがあることと、それを表示上の10進数へ変換する方法に違いがあるためです。

■Excel上での確認方法
当該セル(A1と仮定)を別セルにて下記の計算式で参照できます。

=A1-INT(A1)
書式を設定して小数点以下を18数桁程度表示して確認

このような場合、以下の方法で対応を検討してください。

  • 読み込む場合におけるフロー側での対応
    A) 文字列として読み込む(当該フィールドを"String"型にする)
    B) 「計算結果の丸め処理」プロパティを「はい」にする
  • 書き出す場合におけるフロー側での対応
    Excelに書き出す前にRound関数で丸めを行う

上記、いずれの対応も数値(浮動小数点数)としては誤差の拡大につながる可能性があります。
数値の僅かな誤差が無視できないような場合は、Excelソフトのセルの書式変更での対応をご検討ください。

また当該セルが計算式の場合、下記が有効な可能性もあります。

  • オプション設定での対応
    [ファイル] >[オプション]、[詳細設定]メニューの[次のブックを計算するとき] セクションで目的のブックを選択し、[表示桁数で計算する] チェックボックスをオンにする

    ※Excelのバージョンによっては設定箇所が異なる可能性があります。
    ※Excel上の計算値が変わることになりますのでよく動作検証してください。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

他のキーワードで検索する