JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで大きな数値を正確に扱う方法:+演算子の精度低下とBigInt()による解決策

JavaScriptで大きな数値を格納する場合、+演算子ではなく BigInt() を使用することをおすすめします。+演算子で文字列を数値に変換すると、桁数の多い数値では精度が失われる可能性があります。

これは、JavaScriptの通常の数値型(Number型)がIEEE 754形式の倍精度浮動小数点数として内部的に処理されるためです。安全に正確に表現できる整数は「2^53 - 1」までであり、それを超える数値は丸め誤差が発生します。

+演算子とBigInt()の違いを確認する

以下の例では、同じ大きな数値を +演算子と BigInt() のそれぞれで処理し、結果の違いを確認しています。

サンプルコード

var stringValue1 = "100";
console.log("整数値=");
console.log(+stringValue1);

var stringValue2 = "2312123211345545367";
console.log("+演算子での精度低下..");
console.log(+stringValue2);

const storeLongInteger = BigInt("2312123211345545367");
console.log("BigInt()なら精度は失われない");
console.log(storeLongInteger);

プログラムの実行方法

上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名を demo212.js として保存したものとします。

実行結果

コンソールへの出力は以下のようになります。

PS C:\Users\Amit\JavaScript-code> node demo212.js
整数値=
100
+演算子での精度低下..
2312123211345545000
BigInt()なら精度は失われない
2312123211345545367n

結果のポイント

  • +演算子の場合: 元の数値「2312123211345545367」が「2312123211345545000」となり、末尾の桁が失われています。これが精度低下です。
  • BigInt()の場合: 「2312123211345545367n」として元の数値が完全に保持されています。末尾の「n」はBigInt型であることを示す接尾辞です。

このように、金融計算やID管理など高い精度が求められる場面で非常に大きな整数を扱う場合は、必ず BigInt() を使用するようにしましょう。

  1. JavaScriptスプレッド演算子の使い方を徹底解説!配列の展開と結合の基本

    JavaScriptのスプレッド演算子(...)は、配列を個々の要素へと展開できる便利な構文です。使い方は非常にシンプルで、配列名の前にドット3つ(...)を記述するだけです。 スプレッド演算子の基本構文 [...配列名] この構文により、配列の中身が個別の要素として展開されます。代表的な活用場面は以下の通りです。 複数の配列を結合して、新しい配列を作成する 既存の配列のコピー(シャローコピー)を作る 関数を呼び出す際に、配列の各要素を引数として渡す 実装例:2つの配列をスプレッド演算子で結合する 次のサンプルコードでは、数値の配列 arr1 と文字列の配列 arr2 をスプレッド演算

  2. DOM要素を取得してconsole.logでコンソールに出力する方法【JavaScript入門】

    JavaScriptでDOMに関連する変数をコンソールに表示したい場合、document.getElementById()を使用して対象の要素を取得し、その結果をconsole.log()で出力します。この記事では、実際のコード例を使って、DOM要素をコンソールにログとして表示する手順をわかりやすく解説します。コード例以下は、テキスト入力フィールドのDOM要素を取得してコンソールに表示するサンプルコードです。<!DOCTYPE html> <html lang=ja> <head>    <meta charset=UTF-8>