パーセント書式が正常に表示されない

文書番号 : 83156     文書種別 : 不具合     登録日 : 2018/08/21     最終更新日 : 2018/08/29
文書を印刷する
対象製品
SpreadJS(Ver.10.x.x -)
発生環境
10.3.0
状況
修正済み
詳細
セルに%表記で入力した値が正常に表示されない場合があります。

■現象再現手順
1.セルの表示形式を「パーセンテージ」に変更
2.セルに「0.7%」と値を設定
3.設定された値が、「0.006999999999999999」となる。
  期待している値としては、「0.007」になります。

この現象はJavaScriptの計算精度による問題となります。
例えば、0.7 / 100 の計算をJavaScriptコードで実行すると
結果は 0.007ではなく0.006999999999999999となり、SpreadJSでも
同様の動作となります。

回避方法
SpreadJS (Ver.11.2.4)で修正済み

Ver.10.3.0では、以下のようにGC.Spread.Formatter.GeneralFormatterにて補正する方法が考えられます。

■サンプルコード
var oldParseFn = GC.Spread.Formatter.GeneralFormatter.prototype.parse;
GC.Spread.Formatter.GeneralFormatter.prototype.parse = function (strValue) {
  var parseValue = oldParseFn.apply(this, arguments);
  if (this.formatString() === "0.0%") {
    parseValue = +parseValue.toPrecision(15);
  }
  return parseValue;
}