web-dev-qa-db-ja.com

コンマの後の数字を2桁に丸める

私はこれを行う方法がわかりませんか?私はコンマ番号を追加しています、結果はもちろんコンマの後の桁が多すぎる数字です。誰でも?

66

EDIT 2

次のようなNumberオブジェクトのtoFixedメソッドを使用します。

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)

42.0054321を42.01に丸めます

0.005から0.01に丸めます

-0.005から-0.01に丸めます(したがって、.5境界での丸めでは絶対値が増加します)

jsFiddleの例

81
Jacob Relkin

PDATE: 2010年に最初に回答が書かれた時点では、ベローズ関数toFixed()がわずかに異なる動作をしていました。 toFixed()は現在、ある程度の丸めを行っているようですが、厳密な数学的な方法ではありません。だから注意してください。テストを行う...数学者が期待するように、以下に説明する方法は丸めをうまく行います。

  • toFixed()-メソッドは、指定された小数を保持しながら、数値を文字列に変換します。実際に数値を切り上げるのではなく、数値を切り捨てます。
  • Math.round(n)-数値を最も近い整数に丸めます。したがって、ターニング:

0.5-> 1; 0.05-> 0

したがって、数値0.55555を小数第2位までのみ丸める場合は、あなたは次のことができます(これはステップバイステップの概念です):

  • 0.55555 * 100 = 55.555
  • Math.Round(55.555)-> 56.000
  • 56.000 / 100 = 0.56000
  • (0.56000).toFixed(2)-> 0.56

そして、これはコードです:

(Math.round(number * 100)/100).toFixed(2);
92
Andrei

これは私のために働いた:

var new_number = float.toFixed(2);

例:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667
52
Raivo

以前の回答では、出力を再度数値として入力するのを忘れていました。あなたの好みに応じて、これを行うにはいくつかの方法があります。

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))
11
Romain Vergnory

これは実際にはCPUフレンドリーではありませんが、次のとおりです。

Math.round(number*100)/100

期待どおりに動作します。

3
Tu4n3r

ここには多くの有用な提案を含む多くの答えがありますが、それぞれはまだいくつかのステップを逃しています。
だから、小さな関数にラップされたcompleteソリューションです:

function roundToTwoDigitsAfterComma(floatNumber) {
    return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}

これがどのように機能するかに興味がある場合に備えて:

  1. 100で倍数にし、コンマの後の2桁の精度を維持するために丸めます
  2. 100に分割し直し、toFixed(2)を使用してコンマの後に2桁を保持し、他の役に立たない部分をスローします
  3. parseFloat()関数が代わりに文字列を返すので、toFixed(2)関数を使用して、フロートに変換します

注:金額を扱うためにコンマの後に最後の2桁を保持し、財務計算を行う場合良いアイデアではない であり、代わりに整数値を使用した方がよいことに留意してください。

3
Just Shadow

以下のコードを使用してください。

alert(+(Math.round(number + "e+2")  + "e-2"));
1
Phoenix

私はこれを使用します:

function round(value, precision) {

        if(precision == 0)
                return Math.round(value);       

        exp = 1;
        for(i=0;i<precision;i++)
                exp *= 10;

        return Math.round(value*exp)/exp;
}
0