こちらの記事では、kintoneの画面上で小数点を扱う場合の問題点とその対応方法をご紹介します。

kintoneアプリごとの「数値と計算の精度」の設定について

各アプリの高度な設定の中に、数値と計算の精度の項目があります。


この設定は、数値の有効桁数と丸めかたを設定する内容となります。kintone上ではこの設定に従って数値・計算フィールドの値が表示・保存されることをまず念頭に置いてください。


デフォルトでは全体の桁数が16、小数部の桁数が4となっています。


小数点を含む数値計算の実際

kintoneをブラウザ上で表示している時、小数点を含む計算は、実際には内部的に以下のように計算されます。


0.1 + 0.2 = 0.30000000000000004

技術的な解説: 数値はJavaScriptのNumber型となり、IEEE754に準拠し倍精度64bitバイナリ形式で扱われます。
JavaScript


kintone上では、数値と計算の精度の小数部の桁数は最大10桁まで設定できますが、桁数が足りませんので計算結果との間に必ず誤差が生じます。これはkintoneの仕様となります


誤差の内容

  • kintoneに表示・保存される結果 0.3

  • 実際の計算結果 0.30000000000000004


この挙動は、大半のケースでは問題ありません。ただし計算結果をレコードの値と比較して動作を変えたいような場合や、詳細画面で合計を計算してリロードするようなカスタマイズを作成した場合に、問題が発生します。


影響を受ける「やること」

ここに挙げたものだけではありませんが、集計に分類されるような、計算を行うすべてのやることが、この影響を受けます。



など多数あります。

また、フィールドマッピングなどで記述した式も同様です。


対応方法

round 関数などを用いて、実際の計算結果をkintoneが表示・保存する桁数と一致するように丸めてください。


具体的には、やることの中に「結果をセットするフィールド」というパラメータがありますが、これを利用せずにフィールドに値をセットするでround関数の結果をフィールドにセットするようにしてください。