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


83

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


1
一部のロケールでは、コンマがピリオドに置き換えられます。
DOK 2010年

@ Matt-これはjParseFloatプラグインの一部であり、1.5ではjQueryコアの一部になります!
NickCraver

回答:


107

編集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の例


1
@ Sten-コンマまたは10進数?あなたの質問と例は同意しません。
ニッククレイバー

11
この例は、実際に数値、たとえば0.007を小数点以下2桁に丸めたい場合は機能しません。この結果は、Math.round(0.007)-> 0.000、次にtoFixed(2)-> 0.00です。実際の丸めプロセスでは、0.01がレンダリングされます。
アンドレイ

9
反対票:Math.round()が数値を丸め、それによってすべての小数を削除するため、答えは正しくありません。toFixed(2)が行うのは、2つの後続ゼロを追加することだけです。number.toFixed(2)だけで十分です。
HammerNL 2014年

1
この答えは間違っており、受け入れられた答えを盲目的に使用する前に他の人がコメントを読まない可能性があるため、何かを行う必要があります。
ペドロモレイラ

1
-1:あなたの例に3.1415なり3.00ます。

102

更新: 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);

私も同じ方法を使います。素晴らしい作品
インディアナKernick

>(Math.round(123.12124 * 100)/ 100).toFixed(4);のように、コマの後に目的の桁の浮動小数点数がすでにある場合の例で問題が発生しました。===> 123.1200
Alendorff

1
次のように、丸め計算を変更するのを忘れました:Math.round(123.12124 * 10000)/ 10000).toFixed(4)。これは、小数点以下第4位に四捨五入する場合です。
アンドレイ

エラー:toFixed()数値を丸めるので、切り捨てではありません。参照developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
MikeB

1.005に合格しない
レンジョセフ

55

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

var new_number = float.toFixed(2);

例:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667

これの問題は、数値が「丸められない」ため、の代わりになることだと思います。@Andreiには、適切に丸めるための適切なソリューションがあるようです。0.6666.toFixed(3)0.6660.667
Joshua Pinter 2015

1
ハ!気にしないで。私はそれをテストし、toFixed()完全に動作します:0.6666.toFixed(3) # => 0.667。私はあなたの答えにそれを追加します。
Joshua Pinter 2015

3
最短で最高。これは受け入れられた答えでなければなりません。

12

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

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))

1
これが私によると最良の答えです。シンプルで短く、結果はNUMBER
Kar.ma 2017年

私は「+」表記が好きで、とてもエレガントです
Jibeee 2018年

5

これは実際にはCPUフレンドリーではありませんが、:

Math.round(number*100)/100

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


2

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

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桁を保持し、財務計算行う場合は、それは良い考えではなく、代わりに整数値を使用する方がよいことに注意してください。


1

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

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

2
この回答は、この7年前の質問に対する他の回答と基本的に同じことを行いますが、JavaScriptの暗黙的な型変換を利用して、非常にあいまいな方法で行われます。このコードのどのような性質により、ここに投稿するようになりましたか?
u354356007 2017年

この回答の質は、JSについて知らなかった新しいことを学ばせたということです;-)
Deblaton Jean-Philippe 2017

0

私はこれを使用します:

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;
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.