多くのプログラミング言語には、さまざまな種類の数を表すための専用の数値型がありますが、JavaScriptに用意されているのは2つだけです。
number:倍精度64ビット浮動小数点形式(IEEE 754)の数値データ型です。
例としては、-6、-2.4、0、0.1、1、3.14、16.984025、25、976、1024.0、500000などがあります。bigint:任意精度形式で整数を表せる数値データ型です。
例としては、-12n、0n、4n、9007199254740991nなどがあります。任意精度が必要な場合や、非常に大きな数を扱う場合は、bigint型を使います。それ以外の場合は、number型のほうが適しているでしょう。
Mathという組み込みのグローバルオブジェクトがあり、数値を丸めるさまざまな関数が用意されています。
たとえば、小数を切り捨てたり(floor)、切り上げたり(ceil)して、最も近い整数にできます。
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
JavaScriptには、数値の基本的な算術演算を行うための6つの演算子があります。
+:加算演算子は、数値の和を求めるために使います。-:減算演算子は、2つの数値の差を求めるために使います。*:乗算演算子は、2つの数値の積を求めるために使います。/:除算演算子は、2つの数値を割るために使います。2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
%:除算の余りを求める演算子です。
40 % 4; // => 0
-11 % 4; // => -3
**:べき乗演算子は、数値を累乗するために使います。
4 ** 3; // => 64
4 ** 1 / 2; // => 2
1行で複数の演算子を使う場合、JavaScriptはこちらの優先順位表に示されている優先順位に従います。 これをこの場面に合わせて簡単に言うと、JavaScriptは、小学校の算数の授業で習ったPEDMAS(括弧、指数、除算・乗算、加算・減算)のルールに従います。
const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45
省略記法の代入演算子を使うと、変数に対して算術演算を行い、その新しい値を同じ変数に代入するコードを、より短く書けます。
たとえば、2つの変数xとyを考えてみましょう。
このとき、x += yはx = x + yと同じです。
多くの場合、変数yの代わりに数値と一緒に使われます。
残りの5つの演算も、同じように書くことができます。
let x = 5;
x += 25; // x is now 30
let y = 31;
y %= 3; // y is now 1
この演習では、フリーランスがクライアントと、いくつかのプロジェクトの料金についてやり取りするのを助けるコードを書きます。クライアントのための費用をすばやく計算する、いくつかのユーティリティ関数を書きます。
ratePerHour変数とdayRate関数は、お金に関係しています。
単位は、時間の単位あたりの金額です。それぞれ時間と日に対応します。
あるクライアントが、料金について尋ねるためにフリーランスに連絡してきます。 フリーランスは、**1日8時間働いています**と説明します。 しかし、フリーランスが知っているのは、そのプロジェクトの時給だけです。 時給から日当を見積もれるように手伝いましょう。
dayRate(89);
// => 712
日当は、丸めたり「固定」の精度に変換したりする必要はありません。
別の日、プロジェクトマネージャーが、固定予算のプロジェクトをフリーランスに持ちかけます。 固定予算とフリーランスの時給をもとに、予算を使い切るまでに何日働けるかを計算できるように手伝いましょう。 結果は、最も近い整数に切り捨てる_必要があります_。
daysInBudget(20000, 89);
// => 28
フリーランスのクライアントは、何ヶ月にもわたるプロジェクトでフリーランスを雇うことがよくあります。
そうした場合、フリーランスは、まる1ヶ月ごとに割引を提供することにし、残りの日数は日当で請求します。
ワークライフバランスがすばらしいおかげで、暦月ごとに22日しか働きません。つまり、どの月も請求対象の日数は22日です。
時給、プロジェクトに含まれる請求対象日数、月ごとの割引率が与えられたときに、そうしたプロジェクトの費用を見積もれるように手伝いましょう。
割引率は常に数値として渡され、42%は0.42になります。結果は、最も近い整数に切り上げる_必要があります_。
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Exercismに登録すれば、37個のコンセプト159個の演習、そして本物の人間によるメンタリングとともに、JavaScriptを学んでマスターできます。すべて無料です。