JavaScript勉強メモ5章

# JavaScript勉強メモ5章

## 5章数値
- 浮動小数点数ってなに  
小数点の位置が固定されていない（浮動）数のこと。
大きな数から小さな数まで表現できる。

- リテラルってなに  
ルールのこと。例えば
    - 文字リテラル："この中身は文字として扱われます"
    - 真偽値リテラル：true, false の二つは真偽値です
    - 整数リテラル：42 とか1000 は整数です
    - 浮動小数リテラル：3.14 とか2e8 は小数です

- 数値リテラル  
整数リテラルと浮動小数リテラルのこと

- Numberオブジェクト  
数値のラッパークラス。ラッパークラスは3章でやったけどよくわからなかった。プリミティブ型のデータである数値をオブジェクトとして使うとき、なにもせず使えるのはこのNumberオブジェクトがいるかららしい(感謝)
    - Numberオブジェクトの静的プロパティ
    Numberオブジェクトに用意されてる設定みたいなもの。表示はもちろんconsole.logで

    ```js
    console(Number.MAX_VALUE);
    >> 1.7976931348623157e+308/*扱える最大の数値*/

    console.log(Number.MAX_VALUE*2);/*それを2倍したのを表示して*/
    >>Infinity/*無限として扱います（無理）*/
    ```

- 数値を指定の基数の形式で文字列に変換する (toStringメソッド)   
日本語でok。以下訳  
(10って2進数で表すといくつだっけ？答えは数値じゃなくて文字列で教えてね)  
※基数とはこのときの2進数の"2"のこと

    ```js
    let num = 10; /*numって箱に10っていう数値を入れるよ*/
    console.log(num.toStoring(2))/*numを2進数で表して教えてね*/
    >>1010
    ```
    numって箱にいちいち入れないとだめなの？  
    ←駄目じゃないけどtoString使いたかったら数値をかっこでくくってね

    ```js
    console.log((10).toString(2));
    >>1010
    ```

- 数値を指数形式で文字列に変換する(toExponentialメソッド)  
指数形式でもできる...わかった気になっておきます。  
浮動小数形式だから、勝手に小数点の前の桁数を1にしちゃうらしい。

    ```js
    let num = 34.5642;
    console.log(num.toExponential(2));/*小数点の前は1桁（固定）、小数点の後ろは()の中の"2"桁で教えてね*/
    >>3.46e+1
    ```

- 数値を固定小数点数形式で(toFixed)  
今度は固定小数点形式らしい。小数点の位置は対象の数値と同じまま。

    ```js
    console.log((34.5642).toFixed(3))/*小数点の位置はそのまま後ろは"3"桁まで教えてね*/
    >>34.564
    ```

- 数値の有効桁数を指定して(toPrecisionメソッド)  
有効桁数ってなに  
その数字を指定された桁数で表示するよ。有効数字3桁の例：3.14, 100, 5.68e+3, ...etc  

    ```js
    console.log((5678.9)toPrecision(4);/*5桁の数字を4桁で教えてね*/
    >>5679
    ```

- 数値を指定したロケールに応じた形式で文字列に(toLocaleStringメソッド)  
ロケールってなに  
日本だと数値を見やすくするために3桁ごとにカンマ(,)で区切るよね。そういうルールのことらしい()。


    ```js
    console.log((8242.56).toLocaleString());
    >>8,242.56
    ```

- 文字列を整数に変換する(Number.parseIntメソッド)  
今度は文字列を整数の数値にするよ。parseIntのIntは大文字のIを使って(アイ・エヌ・ティー)だよ。Lntにしないように。基数(何進法か)選べるよ。何も指定されなかったら空気読んで10進法にしとくよ。

    ```js
    console.log(Number.perseInt("9月"));/*文字列"9月"を整数で返してね。*/
    >>9
    console.log(Number.perseInt("month9"));
    >>NaN/*文字列の先頭に数値がないとばぐるよ*/
    ```

- 文字列を浮動小数点数に変換する(Number.parseFloatメソッド)  
文字列を浮動小数点数(小数点使って表すよ、小数点の位置は勝手に調整する)にするよ。

    ```js
    console.log(Number.perseFloat(42.25));
    >>42.25
    ```

- 値がNaNかつ数値型であるか調べる(Number.isNaN)  
NaN(Not a Number)：数値じゃないものを数値に変換したときの値。  
注意しなきゃいけないのはNaN自体は数値として扱われるということ。(Not a Numberが数値とはこれいかに)  
タイトルのメソッドは引数がNaNかNaNじゃないかの判定を行うよ。  
引数ってなに  
メソッドの対象になる数値や文字列のこと。

    ```js
    console.log(typeof(NaN));/*NaNは何型のデータか教えてね*/
    >>number/*NaNは数値だよ(哲学)*/

    console.log(Number.isNaN(NaN));
    >>true
    console.log(Number.isNaN("apple"))
    >>false
    ```

- 値が有限でかつ数値型であるかどうか調べる(Number.isFinite)  
引数が数値じゃなかったらfalse返すよ。数値でもNaNとか無限だったらfalse返すよ。まともな数値ならok。  

    ```js
    console.log(Number.isFinite(100));
    >>true
    console.log(Number.isFinite(Infinity));
    >>false/*無限は帰れ*/
    console.log(Number.isFinite("apple"));
    >>false/*文字列も帰れ*/
    ```
    仲良しなメソッドにisFiniteがいるよ。これは数値が文字列になってても数値だと判定するよ。

    ```js
    console.log(Number.isFinite("2"));
    >>false
    console.log(isFinite("2"));
    >>true
    ```

- 最後に値が整数かどうか調べるよ(Number.isInteger, Number.isSafeInteger)  
二つともIntegerの頭文字は大文字のI(アイ)だから注意してね。名前の通り引数が整数ならtrue、それ以外ならfalse返すよ。

    ```js
    console.log(Number.isInteger(100));
    >>true
    console.log(Number.isInteger("100"));
    >>false
    ```
    二つ目のNumber.isSafeIntegerメソッドは値が整数であっても安全でなければfalse返すよ。安全な整数の定義は理解諦めました()。