Math.round()

数値の値を四捨五入して、一番近い整数に丸めます。

文法

Math.round(x)
引数 説明
x 数値を指定します。

引数の小数部が0.5以上であれば、その引数は切り上げられて整数に丸められます。
引数の整数部が0.5未満であれば、その引数は切り捨てられて整数に丸められます。

roundMathの静的なメソッドであるため、 常にMath.round()として使用することが出来ます。

Math.roundの使用例

// 20の値を返します。
x = Math.round(20.49);

// 21の値を返します。
x = Math.round(20.5);

// -20の値を返します。
x = Math.round(-20.5);

// -21の値を返します。
x = Math.round(-20.51);

// 1の値を返します。(100.5の四捨五入をしているはずなのに…!)
// 不正確な浮動小数点数の計算による丸め誤差に注意してください。
// 下記の例の、Math.round10(1.005, -2)と比較してみてください。
x = Math.round(1.005*100)/100;

小数の調整例

// クロージャ
(function(){

	/**
	 * 数値の小数調整
	 *
	 * @param	{String}	type	調整タイプ
	 * @param	{Number}	value	数値
	 * @param	{Integer}	exp		指数(底を10とした常用対数)
	 * @returns	{Number}			調整された値
	 */
	function decimalAdjust(type, value, exp) {
        // expが未定義(undefined)、または0の場合
		if (typeof exp === 'undefined' || +exp === 0) {
			return Math[type](value);
		}
		value = +value;
		exp = +exp;
        // valueが数値ではない、またはexpが整数ではない場合…
		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
			return NaN;
		}

        // シフト(Shift)
		value = value.toString().split('e');
		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));

        // シフトバック(Shift back)
		value = value.toString().split('e');
		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
	}

	// 四捨五入(Decimal round)
	if (!Math.round10) {
		Math.round10 = function(value, exp) {
			return decimalAdjust('round', value, exp);
		};
	}
	// 切り捨て(Decimal floor)
	if (!Math.floor10) {
		Math.floor10 = function(value, exp) {
			return decimalAdjust('floor', value, exp);
		};
	}
	// 切り上げ(Decimal ceil)
	if (!Math.ceil10) {
		Math.ceil10 = function(value, exp) {
			return decimalAdjust('ceil', value, exp);
		};
	}

})();

// Round
Math.round10(55.55, -1);    // 55.6
Math.round10(55.549, -1);   // 55.5
Math.round10(55, 1);        // 60
Math.round10(54.9, 1);      // 50
Math.round10(-55.55, -1);   // -55.5
Math.round10(-55.551, -1);  // -55.6
Math.round10(-55, 1);       // -50
Math.round10(-55.1, 1);     // -60
// Floor
Math.floor10(55.59, -1);    // 55.5
Math.floor10(59, 1);        // 50
Math.floor10(-55.51, -1);   // -55.6
Math.floor10(-51, 1);       // -60
// Ceil
Math.ceil10(55.51, -1);     // 55.6
Math.ceil10(51, 1);         // 60
Math.ceil10(-55.59, -1);    // -55.5
Math.ceil10(-59, 1);        // -50

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。