Javaエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnetJava
  2. Javaコラム
  3. Java TIPS
  4. JavaのMath.roundの使い方は?Math.roundのサンプル

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

  • Java TIPS
公開日時:   更新日時:
JavaのMath.roundの使い方は?Math.roundのサンプル
この記事でわかること
    システム
    エンジニア
    JavaのMath.roundとはどのようなメソッドなのでしょうか。
    プロジェクト
    マネージャー
    数学計算ができる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

    システム
    エンジニア
    JavaのMath.roundだけでなく、その他のMathクラスの機能についても理解できました。
    プロジェクト
    マネージャー
    JavaのMath.roundを使用する方法と使用しない方法など、ご自身で使い分けてみてください。

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

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

    FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Java新着案件New Job