[Globalize] parseFloatメソッドにて、特定の値を指定すると誤差が発生する

文書番号 : 82075     文書種別 : Limit
登録日 : 2017/03/21     最終更新日 : 2017/03/21

対象製品

Wijmo 5

詳細

GlobalizeのparseFloatメソッドを使用し、文字列を浮動小数点数に変換する際、特定の値を指定すると誤差が発生します。

これは、JavaScriptの小数計算の誤差により発生しています。

以下のサンプルでは、Data列の文字列をparseFloatメソッドで浮動小数点数に変換した結果をparseFloat列に表示しています。2行目の「11.11%」を浮動小数点数に変換した結果が「0.1111」となっておらず、誤差が発生しています。

サンプル

回避方法

下記コードのように明確に小数桁数を指定し、小数を四捨五入します。

◆サンプルコード(JavaScript)
----------------------------------
var tmpData2 = floatFormat(wijmo.Globalize.parseFloat('11.11%'), 4);
grid.setCellData(1, 2, tmpData2.toString());

function floatFormat(number, n) {
  var _pow = Math.pow(10, n);
  return Math.round(number * _pow) / _pow;
}
----------------------------------