Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

double型とは

この記事では、Javaのdouble型について特徴や使い方を紹介します!

double型は、Javaで小数を扱えるデータ型の1つです。

プリミティブ型で、64ビットのサイズを扱えます。

倍精度浮動小数点数とも呼ばれます。

  • 変数に小数値を代入
  • 文字列の小数を計算に使用
  • 割り算の計算結果を扱う

上記のようなシチュエーションで、double型で小数を扱うことが多いです。

その他のデータ型と比較してみると、次のようになります。

データ型 種類 ビット数 範囲
byte 数値 1バイト(8ビット) -128〜127(約128)
short 数値 2バイト(16ビット) -32,768〜32,767(約3.2万)
int 数値 4バイト(32ビット) -2,147,483,648〜2,147,483,647(約21億)
long 数値 8バイト(64ビット) -9,223,372,036,854,775,808〜9,223,372,036,854,775,807(約900京)
float 浮動小数点 4バイト(32ビット) ±3.40282347E+38~ 1.40239846E-45
double 浮動小数点 8バイト(64ビット) ±1.79769313486231570E+308~±4.94065645841246544E-324
boolean 真偽値 1ビット true or false

浮動小数点には、float型もありますが、その違いは扱える範囲です。

double型の方が、倍の範囲で小数値を扱えます。

doubleとDoubleの違いは?

「double と Double を見るけど、なにが違うんだろう?」と思う人もいるのではないでしょうか。

doubleは、前述したようにプリミティブ型のデータ型です。

一方、Doubleはクラスを指します

Doubleクラスになるので、使用する際はオブジェクトを生成する必要があります。

また、Doubleを使う例として、以下のような場合が挙げられるでしょう。

  • Doubleが持つメソッドを使う場合
  • 値がない(null)場合

このように、doubleとDoubleがあるのは、使い方を分けたい場合に活用するためです。

double型の使い方

では、double型を実際に使ってみましょう。

以下のプログラムは、身長と体重を表示するのと、BMI値を計算しています。

■記述例
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
  public static void main(String[] args){
    double height = 172.7;
    double weight = 70.4;

    System.out.println("身長は " + height + " cmです");
    System.out.println("体重は " + weight + " kgです");

    double result =  weight / (height * height) * 10000;

    BigDecimal bmi = new BigDecimal(result);
    bmi = bmi.setScale(1, RoundingMode.HALF_UP);
    System.out.println("BMIは " + bmi + " です");
  }
}

実行結果は次の通りです。

■実行結果
mbp:Desktop potepan$ java Main
身長は 172.7 cmです
体重は 70.4 kgです
BMIは 23.6 です

BMI値の計算部分を少し補足します。

BigDecimal」を使うことで、小数点以下の正確な値の計算を行えるようにします。

BigDecimalについては、以下の記事で詳しく解説しているので、ぜひ参考にしてみてください!

【関連記事】

▶︎【Java】正確に計算するためにBigDecimalの使い方を覚えよう!

また、setScaleメソッドを使うことで、小数点第1位で値を丸める処理も加えています。

これらの処理によって、BMI値が計算された上で、小数点第1位で丸められた結果を取得しています。

ポテパンダの一言メモ

計算結果を正確にするために、BigDecimalを使いました。
浮動小数点方式には、計算を行った際にわずかな誤差が発生することがあり、厳密な計算ができないというデメリットがあるからです。
そのため、double型でそのまま計算することはオススメできません!
計算する際は、必ずBigDecimalを用いましょう。

double型の変換まとめ

ここまで、double型の特徴や使い方を紹介しました。

この章では、double型を他のデータ型に変換する方法について見ていきましょう。

double型⇄int型の変換

double型とint型を変換するには、キャストを行いましょう。

記述方法は次の通りです。

■記述例
public class Main {
  public static void main(String[] args){
    double d1 = 13.5;
    int i1 = 10;

    int i2 = (int)d1;
    double d2 = (double)i1;

    System.out.println("d1 = " + d1);
    System.out.println("d2 = " + d2);
    System.out.println("i1 = " + i1);
    System.out.println("i2 = " + i2);
  }
}

■実行結果
mbp:Desktop potepan$ java Main
d1 = 13.5
d2 = 10.0
i1 = 10
i2 = 13

int型の値はdouble型に、double型の値はint型に変換できているのがわかります。

double型をint型に変換する際に切り上げるには?

double型の値をint型に変換した際に、値を切り上げたい場合があると思います。

値の切り上げを行うには、ceilメソッドを使いましょう。

ceilメソッドを使うことで、小数第1位を切り上げて値を取得できます。

参考に記述例を載せると、次のようになります。

■記述例
public class Main {
  public static void main(String[] args){
    double d1 = 13.5;

    int i1 = (int)(d1);
    int i2 = (int)Math.ceil(d1);

    System.out.println("切り上げなしの結果:" + i1);
    System.out.println("切り上げありの結果:" + i2);
  }
}
■実行結果
mbp:Desktop potepan$ java Main
切り上げなしの結果:13
切り上げありの結果:14

double型をint型に変換した上で、値の切り上げができていますね。

double型⇄String型の変換

「数値と文字列を変換できるの?」と思うかもしれませんが、変換可能です!

ここでは、double型とString型の変換を行ってみましょう。

まず、double型をString型に変換するには、「valuOfメソッド」を使います。

valueOfメソッドは、数値型を文字列型に変換できるメソッドです。

例えば、次のように記述して変換できます。

■記述例
public class Main {
  public static void main(String[] args){
    double d = 123.45;

    String s = String.valueOf(d);
    System.out.println("String型の値 : " + s);  
  }
}

valueOfメソッドの引数に、変換したい変数(double型)を記述すればOKです。

実行結果は、次のようになります。

■実行結果
mbp:Desktop potepan$ java Main
String型の値 : 123.45

一方、String型をdouble型に変換するには、「parseDoubleメソッド」を使いましょう。

使うことで、文字列をdouble型の値に変換可能です。

次のように記述できます。

■記述例
public class Main {
  public static void main(String[] args){
    String s = "123.45";

    double d = Double.parseDouble(s);
    System.out.println("double型の値 : " + d);
  }
}
■実行結果
mbp:Desktop potepan$ java Main
double型の値 : 123.45

このように、期待した結果を取得できました!

double型のnullチェック

double型でnullチェックをしたいと思っているかもしれません。

しかし、double型はそもそもnullにはできないのです。

冒頭で説明したように、doubleはプリミティブ型のデータ型です。

そして、プリミティブ型はnullにできません。

そのため、double型の変数はそもそもnullにならないというわけです。

それでも、nullチェックを行う場合は、「isNaNメソッド」を使いましょう。

「NaN」は、非数値を表します。

nullではありませんが、nullチェックのような扱いでチェック可能です。

次のように記述できます。

■記述例
public class Main {
  public static void main(String[] args){
    double d = Double.NaN;

    if(Double.isNaN(d)) {
      System.out.println("d は NaN です!");
    } else {
      System.out.println("d は NaN ではありません!");
    }
  }
}
■実行結果
mbp:Desktop suzuka$ java Main
d は NaN です!

使う機会は少ないと思いますが、覚えておくと便利でしょう。

double型の四捨五入

「double型をint型に変換する際に切り上げるには?」で、値を切り上げる方法について解説しました。

切り上げと合わせて、ここでは四捨五入や切り捨ての方法も見ていきましょう。

それぞれの処理で使うメソッドは、次の通りです。

値の操作をする3つのメソッド
  • 切り上げ:ceilメソッド
  • 切り捨て:floorメソッド
  • 四捨五入:roundメソッド

使い方は、ceilメソッドと同様です。

実際にプログラムを動かして確認してみましょう。

■記述例
public class Main {
  public static void main(String[] args){
    double d = 123.6;

    System.out.println("double型の切り上げ : " + Math.ceil(d));
    System.out.println("double型の切り捨て : " + Math.floor(d));
    System.out.println("double型の四捨五入 : " + Math.round(d));
  }
}
■実行結果
mbp:Desktop potepan$ java Main
double型の切り上げ : 124.0
double型の切り捨て : 123.0
double型の四捨五入 : 124

それぞれ、意図した動作になっています。

ただし、マイナスの値を四捨五入すると次のような結果になります。

■記述例
public class Main {
  public static void main(String[] args){
    double d = -123.6;
    System.out.println("double型の切り上げ : " + Math.ceil(d));
    System.out.println("double型の切り捨て : " + Math.floor(d));
    System.out.println("double型の四捨五入 : " + Math.round(d));
  }
}

■実行結果
mbp:Desktop potepan$ java Main
double型の切り上げ : -123.0
double型の切り捨て : -124.0
double型の四捨五入 : -124

まとめ

Javaのdoube型について、使い方や変換方法などを紹介しました!

double型は、少数を扱えることから割り算の計算や変換などでよく使われるデータ型です。

精度の面からも、float型より頻繁に使われる機会が多いのです。

また、ここでも紹介したように、int型からの変換や、文字列から変換する場合などもあります。

覚えることが多いように感じるかもしれませんが、ぜひこの記事で使い方をしっかり覚えていってください!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。