Paepoi

Paepoi » JavaScript Tips » JavaScript Number

JavaScript Number

# 最終更新日 2024.01.03

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

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

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

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

console.log(0x0d * 0b10);
//=> 26

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

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

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

console.log(parseInt('ff', 16));
//=> 255
console.log(parseInt('11', 2));
//=> 3

指数
3.1e+6 なら 3.1*106 という意味です 
console.log(3.1e+6);
//=> 3100000

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

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

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

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

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

BigInt
Number は 17 桁までしか正しく扱えません、超えるなら BigInt を利用
// 末尾に n を付けると BigInt になる
let num = 12345678901234567890;
console.log(num);
//=> 12345678901234567000

let bigNum = 12345678901234567890n;
console.log(bigNum);
//=> 12345678901234567890

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

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

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