0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rex0220 計算式プラグイン 小数計算例

Last updated at Posted at 2023-10-27

計算式プラグインでの小数計算例です。

概要

JavaScript で、小数計算を行うと2進数で小数計算を行うため誤差が出る場合があります。
計算式プラグインは、bignumber.jsというライブラリを利用して、誤差がでないようにしています。
kitone 標準の計算項目では、API で計算を行っており誤差が出ないようになっているようです。

計算式プラグインの計算例

2023-10-27_20h34_03.png

JavaScript の計算例

編集画面では、誤差が表示されるが、レコード保存時に小数が丸められる。
2023-10-27_20h37_18.png
※kintone 標準の計算式で、数値3 と計算の項目を比較すると、数値が異なるにもかかわらず、数値が同じという〇が表示される。
比較前に小数の丸め処理が行われてると思われます。

kintone 数値と計算の精度

アプリの高度な設定で、数値と計算の精度が設定される
2023-10-27_20h51_54.png

kintone 標準の計算式

2023-10-27_20h45_15.png

2023-10-27_20h45_43.png

計算式プラグインの設定

2023-10-27_20h44_40.png

JavaScript による計算

.js
(function () {
    'use strict';
    let evs = [
        'app.record.create.show', 'app.record.edit.show',
        'app.record.create.change.テーブル', 'app.record.edit.change.テーブル',
        'app.record.create.change.数値1', 'app.record.edit.change.数値1',
        'app.record.create.change.数値2', 'app.record.edit.change.数値2',
    ];

    kintone.events.on(evs, (event) => {
        const record = event.record;
        record.テーブル.value.forEach((row) => {
            try {
                row.value.数値3.value = Number(row.value.数値1.value) + Number(row.value.数値2.value);
            }
            catch (error) {
                row.value.数値3.value = '';
            }
        });
        return event;
    });
})();
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?