thumbnail

JSの数値表記とその変換

2022/03/05

JavaScriptの数値表記とその変換に関して簡単にまとめてみました。

JavaScriptの数値表記

Number

JSのNumber表記はいくつかあります。

12345    // 10進数の12345
1.23     // 1.23
1.23e4   // 1.23 × 10の4乗
1.23E4   // 1.23 × 10の4乗

0xff88   // 16進数のFF88(=10進数の65416)
0Xff88   // 16進数のFF88(=10進数の65416)
0b1101   // 2進数の1101(=10進数の13)
0B1101   // 2進数の1101(=10進数の13)
0o755    // 8進数の755(=10進数の493)
0O755    // 8進数の755(=10進数の493)

// ES2021から以下のような_表記が可能に
1_23_45  // 12345
0xff_ff  // 0xffff

BigInt

通常のNumber型が2^53(~9000兆)の精度を持つのに対して、ES2020で追加されたBigIntでは任意精度の整数を扱うことが可能になりました。

整数の末尾にnを追加するか、BigInt()コンストラクターを呼び出し(new演算子は除く)、整数値または文字列値を与えることで生成することができます。

Web3の開発では桁数の大きい整数を扱うことがおおいので、このBigIntを使う場合もあります。

console.log(9007199254740991n);
// ↪ 9007199254740991n

console.log(BigInt(9007199254740991));
// ↪ 9007199254740991n

console.log(BigInt("9007199254740991"));
// ↪ 9007199254740991n

console.log(BigInt("0x1fffffffffffff"));
// ↪ 9007199254740991n

Number → String変換

NumberからStringへの変換はtoStringがmejorですが、他にも色々あります。

toString

引数にradix進数を指定することも可能です。

const x = 65535;
console.log(x.toString());
// ↪ 65535
console.log(x.toString(16));
// ↪ ffff

toExponential

指数表記の文字列に変換します。 引数には小数点以下の桁数を指定できます。

const x = 12345689;
console.log(x.toExponential());
// ↪ 1.2345689e+7
console.log(x.toExponential(3));
// ↪ 1.235e+7

toFixed

固定小数点表記の文字列に変換します。 引数には小数点以下の桁数を指定できます。

const x = 1.23456;
console.log(x.toFixed());
// ↪ 1
console.log(x.toFixed(3));
// ↪ 1.234

toPrecision

指定された精度で表した文字列に変換します。

const a = 123.456;
console.log(a.toPrecision(4));
// ↪ 123.5

const b = 0.004;
console.log(b.toPrecision(4));
// ↪ 0.004000

const c = 1.23e5;
console.log(c.toPrecision(4));
// ↪ 1.230e+5

Intl.NumberFormat

Intl.NumberFormatでは言語に依存した文字列への変換が可能です。 Chrome, Firefox, Safari, IE11で使用可能なmethodになります。

const x = 123456.789;

const ja = new Intl.NumberFormat('ja-JP');
console.log(ja.format(x));
// ↪ 123,456.789 (日本様式)

const en = new Intl.NumberFormat("en-US");
console.log(en.format(x));
// ↪ 123,456.789 (アメリカ様式)

const de = new Intl.NumberFormat("de-DE");
console.log(de.format(x));
// ↪ 123.456,789 (ドイツ様式)

const jpy = new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' });
console.log(jpy.format(x));
// ↪ ¥123,457 (日本円)
author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

Profile

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

© 2022 mitsuru takahashi