JavaScriptで小数点数の丸め処理を徹底解説!floor、ceil、roundの違いとは?

2024-04-02

JavaScriptで浮動小数点数を整数に変換する方法

Math.floor() と Math.ceil()

概要:

  • Math.floor() は、浮動小数点数を切り捨てて整数に変換します。

例:

const num1 = 3.14;
const num2 = -2.71;

console.log(Math.floor(num1)); // 出力: 3
console.log(Math.ceil(num1)); // 出力: 4
console.log(Math.floor(num2)); // 出力: -3
console.log(Math.ceil(num2)); // 出力: -2

注意点:

  • どちらの方法も、小数点以下の桁を切り捨てまたは切り上げるため、精度が失われる可能性があります。
const num1 = 3.14;
const num2 = 2.71;

console.log(Math.round(num1)); // 出力: 3
console.log(Math.round(num2)); // 出力: 3
  • 小数点第1位が5の場合、偶数側に丸められます。

その他の方法

  • parseInt(): 文字列を整数に変換する関数です。浮動小数点数を含む文字列を渡すと、小数点以下の桁を切り捨てて整数に変換されます。
  • toFixed(): 数値を固定小数点表記に変換する関数です。小数点以下の桁数を指定することで、実質的に整数に変換できます。

これらの方法は、上記の方法よりも特殊なケースで使用されます。

JavaScriptで浮動小数点数を整数に変換するには、いくつかの方法があります。それぞれの方法の特徴と使い分けを理解して、目的に合った方法を選びましょう。




// 1. Math.floor() と Math.ceil()

const num1 = 3.14;
const num2 = -2.71;

console.log(`Math.floor(${num1}) = `, Math.floor(num1)); // 出力: Math.floor(3.14) = 3
console.log(`Math.ceil(${num1}) = `, Math.ceil(num1)); // 出力: Math.ceil(3.14) = 4
console.log(`Math.floor(${num2}) = `, Math.floor(num2)); // 出力: Math.floor(-2.71) = -3
console.log(`Math.ceil(${num2}) = `, Math.ceil(num2)); // 出力: Math.ceil(-2.71) = -2

// 2. Math.round()

const num3 = 3.14;
const num4 = 2.71;

console.log(`Math.round(${num3}) = `, Math.round(num3)); // 出力: Math.round(3.14) = 3
console.log(`Math.round(${num4}) = `, Math.round(num4)); // 出力: Math.round(2.71) = 3

// 3. parseInt()

const num5 = "3.14";
const num6 = "2.71";

console.log(`parseInt(${num5}) = `, parseInt(num5)); // 出力: parseInt("3.14") = 3
console.log(`parseInt(${num6}) = `, parseInt(num6)); // 出力: parseInt("2.71") = 2

// 4. toFixed()

const num7 = 3.1415926535;
const num8 = 2.7182818284;

console.log(`num7.toFixed(0) = `, num7.toFixed(0)); // 出力: num7.toFixed(0) = 3
console.log(`num8.toFixed(1) = `, num8.toFixed(1)); // 出力: num8.toFixed(1) = 2.7

このコードを実行すると、以下のような出力が得られます。

Math.floor(3.14) = 3
Math.ceil(3.14) = 4
Math.floor(-2.71) = -3
Math.ceil(-2.71) = -2
Math.round(3.14) = 3
Math.round(2.71) = 3
parseInt("3.14") = 3
parseInt("2.71") = 2
num7.toFixed(0) = 3
num8.toFixed(1) = 2.7

出力例の説明

  • Math.floor()Math.ceil() は、小数点以下の桁を切り捨てまたは切り上げて整数に変換します。



浮動小数点数を整数に変換するその他の方法

Bitwise演算

ビット演算を使用して、浮動小数点数を整数に変換することができます。ただし、この方法は複雑で、ビット演算に精通していない人には難解かもしれません。

function floatToIntBitwise(num) {
  const view = new DataView(new ArrayBuffer(4));
  view.setFloat32(0, num, true);
  return view.getInt32(0, true);
}

const num = 3.14;
const intVal = floatToIntBitwise(num);

console.log(intVal); // 出力: 3
  • この方法は、すべてのブラウザでサポートされているわけではありません。
  • ビット演算に精通していない人には難解かもしれません。

ライブラリの使用

lodash などのライブラリには、浮動小数点数を整数に変換する関数などが含まれています。ライブラリを使用する方法は、ライブラリによって異なりますが、一般的には以下の手順で行います。

  1. ライブラリをインストールする。
  2. 関数を呼び出して、浮動小数点数を整数に変換する。
// ライブラリのインストール
// npm install lodash

// ライブラリのインポート
const _ = require('lodash');

// 関数の呼び出し
const num = 3.14;
const intVal = _.floor(num);

console.log(intVal); // 出力: 3
  • ライブラリの使用には、ライブラリのインストールが必要となります。
  • ライブラリの関数の使い方は、ライブラリによって異なります。

javascript syntax


スクロールイベントの方向判定をマスターして、ユーザー体験を向上させる

event. originalEvent. deltaY プロパティは、スクロールの方向と量を表す数値です。このプロパティの値が正の場合、スクロールは下方向に、負の場合、スクロールは上方向になっています。scrollTop プロパティは、スクロールバーの位置を表します。このプロパティの値を前回のスクロールイベント時の値と比較することで、スクロールの方向を判定できます。...


HTML5 Local StorageとSession Storageを使いこなしてブラウザでデータを保存しよう

HTML5 Local StorageとSession Storageは、ブラウザ上でデータを保存するためのAPIです。どちらもJavaScriptからアクセスできますが、保存期間とデータの共有範囲が異なります。Local Storageデータはブラウザが閉じられるまで永続的に保存されます。...


JavaScript フロントエンド開発における npm と bower の徹底比較

npm と bower は、JavaScript プロジェクトでライブラリやフレームワークを管理するためのツールです。それぞれ異なる目的と機能を持ち、使い分けが重要です。npmNode. js パッケージマネージャーサーバーサイドとクライアントサイド両方のモジュールを管理...


Angular 2 オプションルートパラメータ

ルート設定まず、@RouteConfig デコレータを使ってルート設定を行います。このとき、オプションパラメータはコロン(:)とパラメータ名で記述します。この例では、'/user/:id' というルートと '/user' というルートを設定しています。...


React FlatListとVirtualizedList:大量リストをレンダリングするための最適なツール

Reactは、仮想DOMと呼ばれる技術を使用して、パフォーマンスを向上させます。仮想DOMは、実際のDOMとは異なる軽量なデータ構造であり、変更を効率的に追跡することができます。変更が生じた場合、Reactは仮想DOMを更新し、必要なDOM要素のみを更新します。これにより、不要な再レンダリングを回避し、パフォーマンスを向上させることができます。...