Javascriptの計算式について

いつも大変お世話になっております。

総人数:19人 報酬:¥24,000にしたいですが、どうすればよろしいでしょうか?

kintoneのアプリ設定→高度な設定→丸めかた→切捨てにしてみたら、総人数は19人になりますが、報酬はやっぱり¥24,500になってしまいます。

ソースのほうでなにかできるでしょうか?アドバイス頂ければ幸いです。よろしくお願い致します。

 

(function () {
“use strict”;
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function (event){
var record = event.record;
var 人数 = Number(record[‘人数’].value);
var 枚数 = Number(record[‘枚数’].value);
var 基本料金 = Number(record[‘基本料金’].value);
var 計算料金 = Number(record[‘計算料金’].value);

var 総人数 = 人数 + 枚数 / 2 ;
var 報酬 = 計算料金 * ( 総人数 - 5 ) + 基本料金;

record[‘総人数’].value = 総人数;
record[‘報酬’].value = 報酬;
return event;
});})();

玲香様

お世話になっております。
cstapの江田です。

JavaScriptでの小数切り上げは、Math.floor()で行えます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

今回の場合は、
var 総人数 = 人数 + 枚数 / 2 ;

var 総人数 = Math.floor(人数 + 枚数 / 2) ;
とすればよいかと思います。

江田篤史 様

いつもお世話になっております。

教えていただき、ありがとうございます。おかげさまで無事解決致しました。

初心者で大変恐縮ですが、

今のアプリは無事動きましたが、それに他の手入力の項目もつけて、たまには、ここでの項目すべて入力しないときもありますが、

そうしたら、レコードを保存するときに、「総人数」と「報酬」項目には、「数字でなければなりません。」とエラーとなり、保存すらできなくなります。

どうすれば、動くようになりますでしょうか?

お手数ですが、アドバイス頂ければ幸いです。よろしくお願い致します。

玲香様

空欄のまま保存する可能性のある項目に関しては、条件分岐をさせて、空欄だったとき用の値を設定するとよいと思います。

(function () {
"use strict";
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function (event){
var record = event.record;
var 人数 = Number(record['人数'].value);
var 枚数 = Number(record['枚数'].value);
var 基本料金 = Number(record['基本料金'].value);
var 計算料金 = Number(record['計算料金'].value);
if(typeof record['追加項目'].value === "undefined"){
var 追加項目 = 1;
}else{
var 追加項目 = Number(record['追加項目'].value);
}

var 総人数 = Math.floor(人数 + 枚数 / 2) * 追加項目;
var 報酬 = 計算料金 * ( 総人数 - 5 ) + 基本料金;
record['総人数'].value = 総人数;
record['報酬'].value = 報酬;

return event;
});})();

また、if文の代わりに、三項演算子や論理演算子の「||」を用いるとより短くコードを書けるので知っておくとよいと思います。

//三項演算子を用いた場合
var 追加項目 = (typeof record['追加項目'].value === "undefined") ? 1 : Number(record['追加項目'].value);

//論理演算子の「||」を用いた場合
var 追加項目 = Number(record['追加項目'].value) || 1;

ただし、「0」を入力する可能性がある場合は「||」を用いた方法は使わない方が良いかと思います。

江田篤史

いつも大変お世話になっております。

お返事いただき、本当に感謝しております。

空欄のまま保存する可能性のある項目は

人数、枚数、総人数、報酬、基本料金、計算料金といった今のすべての項目となりまして、
**特に、「総人数」と「報酬」項目を「数字でなければなりません。」とエラーを出せないようにしたいです。**  
  
言葉の表現がうまくできず、大変申し訳ございませんでした。
アドバイスいただいたように、ちょっと試してみます。