Paepoi

Paepoi » JavaScript Tips » JavaScript Number

JavaScript Number

# 最終更新日 2020.07.19
Gjs での覚書です、環境によっては print を console.log で全置換してください

数値
JavaScript における数値は 64bit の浮動小数点数です
C 言語でいう double です
// 整数と浮動小数点数という違いは現在存在しません
print(3 === 3.0);
//=> true

// NaN や Infinity も Number オブジェクトです
print(`NaN=${typeof(NaN)}, Infinity=${typeof(Infinity)}`);
//=> NaN=number, Infinity=number

16 進数, 8 進数, 2 進数
8 進数は 0o*、2 進数は 0b* が ES6 で追加された
16 進数は 0x* なのは従来どおり
print(0x0d); //=> 13
print(0o76); //=> 62
print(0b10); //=> 2

// 計算すると普通に Number オブジェクトで戻る
// 表記だけの話なので出力は 10 進数になる

print(0x0d * 0b10);
//=> 26

// 16 進文字列等で出力するには toString の引数で指定

let num = 250;
print(num.toString(16));
//=> fa

// 文字列からの変換は parseInt の第二引数で指定

print(parseInt('ff', 16));
//=> 255
print(parseInt('11', 2));
//=> 3

指数
JavaScript で計算をしていると e+ の付いた値が戻る場合がある
3.1e+6 なら 3.1*106 という意味です 
print(3.1e+6);
//=> 3100000

NaN, Infinity
NaN は数値ではない(Not a Number)、Infinity は無限大という意味
// NaN を作る例、0/0 のほうが簡単だけど
let nan = 1 / Function
print(nan);
//=> NaN

// NaN の比較は必ず false になる
print(nan == NaN);
//=> false

// NaN かどうかを調べるには isNaN を使う
print(isNaN(nan));
//=> true

// Infinity を作る例、ゼロで除算
let inf = 1 / 0
print(inf);
//=> Infinity

// isFinite は値が NaN か Infinity の場合 false を戻す
print(isFinite(inf));
//=> false

BigInt
Number は 17 桁までしか正しく扱えません、超えるなら BigInt を利用
2020 年現在使える環境は限られています、Gjs は対応しています
// 末尾に n を付けると BigInt になる
let num = 12345678901234567890;
print(num);
//=> 12345678901234567000

let bigNum = 12345678901234567890n;
print(bigNum);
//=> 12345678901234567890

// Number との比較は == なら true で === なら false になる
print(10 === 10n);
//=> false

// 計算は BigInt 同士で行わないとエラー
print(bigNum + 3);
//=> Error!

Copyright(C) sasakima-nao All rights reserved 2002 --- 2020.