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

JavaScriptで浮動小数点数を分割し、小数第2位で四捨五入して商と余りを求める方法

概要

たとえば、次のような浮動小数点数があるとします。

2.74

この数値をそのまま4で割ると、結果は 0.685 になります。

ここで、同じく4で割りながら、結果を小数点以下2桁に丸めて扱いたいケースを考えてみましょう。

その場合、期待する出力は次のようになります。

0.69 × 3 と余り 0.67

コード例

この処理を実現するコードは以下のとおりです。

const num = 2.74;
const parts = 4;
const divideWithPrecision = (num, parts, precision = 2) => {
    const quo = +(num / parts).toFixed(precision);
    const remainder = +(num - quo * (parts - 1)).toFixed(precision);
    if(quo === remainder){
        return {
            parts,
            value: quo
        };
    }else{
        return {
            parts: parts - 1,
            value: quo,
            remainder
        };
    };
};
console.log(divideWithPrecision(num, parts));

仕組みの解説

この関数では、まず (num / parts).toFixed(precision) によって商を指定桁数で四捨五入しています。さらに、単項プラス演算子(+)を使うことで、toFixed() が返す文字列を数値型へ変換しています。

余りの計算は「元の数値 − 商 ×(分割数 − 1)」という式で行われます。これは、ほぼ均等な値を parts - 1 個分に配分し、最後の1個分を余りとするという考え方です。

商と余りが一致する場合は全ての分割が同じ値になるため parts をそのまま返し、一致しない場合は parts - 1 と余りを含むオブジェクトを返します。これにより、金額の按分や在庫の分配など、端数処理が必要な場面で活用できます。

実行結果

コンソールには次のように出力されます。

{ parts: 3, value: 0.69, remainder: 0.67 }
  1. JavaScriptのparseInt()とNumber()の違いを徹底解説!文字列を数値に変換する正しい方法

    parseInt()とNumber()の違いとは?JavaScriptで文字列を数値に変換する際によく使われるのが「parseInt()」と「Number()」です。どちらも文字列から数値を取得する関数ですが、内部の動作は大きく異なります。それぞれの特徴と挙動の違いを見ていきましょう。parseInt(string):先頭から数字だけを読み取るparseInt()メソッドは、文字列の先頭から順に解析し、最初に数字以外の文字が現れた時点で解析を中止し、それまでに読み取った値を返します。例えば、次のコードは 765 を返します。parseInt(765world)もう一つの例です。次のコードは 5

  2. JavaScriptで数値を丸める・切り捨てる方法|Math.round()とMath.trunc()の違いと使い方

    JavaScriptには、小数を整数へ変換するためのメソッドとして、Math.round() と Math.trunc() の2つが標準で用意されています。Math.round():小数点以下を四捨五入し、最も近い整数に丸めます。例えば「3.5」は「4」に、「3.4」は「3」になります。Math.trunc():小数点以下を単純に取り除き、整数部分だけを残します。「3.9」も「3.1」もどちらも「3」になります。それぞれの特徴を踏まえながら、実際のコード例を見ていきましょう。Math.round() と Math.trunc() の違いメソッド動作例(3.999)Math.round()四捨五