Javaコラム Javaエンジニアのためのお役立ちコラム

JavaのMath.roundの使い方は?Math.roundのサンプル

2021年08月18日
SE
JavaのMath.roundとはどのようなメソッドなのでしょうか。
PM
数学計算ができるJavaのクラス内でも小数点以下の四捨五入ができるメソッドです。

JavaのMath.roundとは?


JavaにはMathクラスという数学計算で便利に使えるメソッドを持つ標準クラスがあります。その中でも小数点以下の四捨五入ができるMath.roundは使う機会が比較的多いのではないでしょうか。

この記事ではMath.roundとそれ以外のMathクラスのメソッドについて紹介しますので、Javaの数学計算の方法を探している人は是非ご覧下さい。

Math.roundについての公式な説明

Math.roundメソッドについての公式な説明は以下のようになっています。パラメータにdouble型とlong型を指定できる2つがあります。

static long round(double a)
引数にもっとも近いlongを返します。同数の場合は正の無限大方向に丸めます。
static int round(float a)
引数にもっとも近いintを返します。同数の場合は正の無限大方向に丸めます。

要は小数点以下の四捨五入ができるということですが、四捨五入という言葉を使わずにそれを説明すると、このようになります。「丸める」というのは、ある少数があるとして、それに最も近い整数に直すことです。

Math.roundのサンプル

では実際にMath.roundを使ってみましょう。以下のJavaサンプルを実行してみてください。少数の末尾にfを付けるとfloat型、末尾にdを付けるとdouble型になります。

結果は以下になります。

3.4を四捨五入すると3

3.5を四捨五入すると4

結果のintとlongの型を変えたい場合は?

2つのMath.roundは、double→longとfloat→intの2つにしか対応していません。double→intやfloat→longにしたい場合はどうすれば良いのでしょうか。以下はlongとintを逆にしたサンプルです。

long round(double a)をintにする時は注意すること

long型の結果をint型の変数に代入するには、(int)でキャストします。逆にint型からlongの場合はキャストは不要です。これはintは32ビット長であるのに対し、longは64ビット長さなのでサイズが溢れることが無いからです。

なお(int)でキャストしてもサイズ溢れは防げません。32ビット長のint型のサイズは-2,147,483,648~2,147,483,647までです。以下のJavaサンプルではそれを超えるサイズをint型にしています。

結果は以下の通りで、int型の方は正しい値になりません。注意しましょう。

3.4を四捨五入すると3000000000

3.4を四捨五入すると-1294967296

Math.roundを使わずに四捨五入する

JavaでMath.roundを使わずに四捨五入するにはどうしたらよいのでしょうか。それは0.5を足してintやlongなどの整数型にキャストすれば可能です。以下のようにします。

結果は以下の通りです。

4.6を四捨五入すると、5になります。

切り上げ、切り捨てをするMathクラスのメソッド

JavaのMathクラスは四捨五入のroundだけでなく、切り上げや切り捨てをするメソッドもあります。以下がそのJavaサンプルです。

実行結果は以下になります。小数点以下の切り上げ・切り捨てが出来ています。

1.1を切り上げると2.0になります。

1.9を切り捨てると1.0になります。

絶対値を返すMathクラスのメソッド

JavaのMathクラスには絶対値を返すabsメソッドがあります。これは正の値の場合そのままの値を返し、負の値だった場合は正の値にして返します。以下のJavaサンプルではabsメソッドを使ったケースと、if文で処理したケースを併記しています。

結果は以下になります。Math.absの方がif文で処理するより簡潔になります。

-3の絶対値は3

-3の絶対値は3

階乗を計算するMathクラスのメソッド

JavaのMathクラスには階乗の計算ができるメソッドのpowがあります。以下はMath.powを使ったケースと、それを使わずに自分で実装した場合との比較です。

結果は以下になります。Math.powを使えば自分で処理を実装するより簡単に済みます。

8の5乗は32768.0

8の5乗は32768

Mathクラスの三角関数のメソッド

JavaのMathクラスは三角関数の定数やメソッドがあります。以下がその使用例です。

実行結果は以下になります。三角関数は円を描画する時などに役立ちます。

円周率は3.141592653589793
30度のサインは-0.9880316240928618
60度のコサインは-0.9524129804151563
90度のタンジェントは-1.995200412208242

SE
JavaのMath.roundだけでなく、その他のMathクラスの機能についても理解できました。
PM
JavaのMath.roundを使用する方法と使用しない方法など、ご自身で使い分けてみてください。

JavaのMath.roundなどの機能を使いこなそう

JavaのMath.roundやその他のMathクラスの機能について解説しましたが、ご理解頂けましたでしょうか。Mathクラスはここで紹介した内容以外にも様々な機能があるので、是非チェックしてマスターしてしまいましょう。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

recommended

Categories

Tags