カテゴリ: Javaの変数・データ型 更新日: 2025/03/26

Java の小数(double, float)を使って計算しよう

068
Java の小数(double, float)を使って計算しよう

新人と先輩の会話形式で理解しよう

新人

「Java で小数を扱いたいときは、どんなデータ型を使えばいいんですか?」

先輩

「Java では、小数を扱うために float 型と double 型の 2 つのデータ型があるよ。」

新人

「その 2 つはどう違うんですか?どっちを使えばいいんでしょうか?」

先輩

「それじゃあ、小数を扱うデータ型について詳しく見ていこう!」

1. 小数を扱うデータ型とは?(基本的な説明)

1. 小数を扱うデータ型とは?(基本的な説明)
1. 小数を扱うデータ型とは?(基本的な説明)

Java で小数を扱うためには、float 型または double 型を使います。

小数型の種類

  • float 型 - 32 ビットの浮動小数点型。小数の精度が低く、少ないメモリを使う。
  • double 型 - 64 ビットの浮動小数点型。精度が高く、より多くの小数を扱える。

たとえば、小数を扱うためのコードは次のようになります。


public class DecimalExample {
    public static void main(String[] args) {
        float floatValue = 3.14f;
        double doubleValue = 3.1415926535;

        System.out.println("float の値: " + floatValue);
        System.out.println("double の値: " + doubleValue);
    }
}

2. float 型と double 型の違い(使い分けのポイント)

2. float 型と double 型の違い(使い分けのポイント)
2. float 型と double 型の違い(使い分けのポイント)

小数を扱う場合、float 型と double 型のどちらを使えばよいのでしょうか?

float 型を使う場面

  • メモリ使用量を抑えたい場合
  • 高い精度が必要ない計算(例えばグラフィック処理)

public class FloatExample {
    public static void main(String[] args) {
        float weight = 60.5f;
        System.out.println("体重: " + weight + "kg");
    }
}

double 型を使う場面

  • より高い精度の計算が必要な場合(金融計算など)
  • 数学的な計算で丸め誤差を少なくしたい場合

public class DoubleExample {
    public static void main(String[] args) {
        double pi = 3.1415926535;
        System.out.println("円周率: " + pi);
    }
}

3. double 型の基本的な使い方(サンプルコード)

3. double 型の基本的な使い方(サンプルコード)
3. double 型の基本的な使い方(サンプルコード)

double 型は、Java で最もよく使われる小数型です。double 型の変数を宣言し、小数を計算する方法を見てみましょう。

double 型の変数を使う

次のプログラムは、double 型の変数を宣言し、計算を行うサンプルです。


public class DoubleExample {
    public static void main(String[] args) {
        double num1 = 5.5;
        double num2 = 2.3;
        double sum = num1 + num2;
        
        System.out.println("合計: " + sum);
    }
}

double 型の計算

double 型の変数を使って四則演算を行うことができます。


public class DoubleCalculation {
    public static void main(String[] args) {
        double a = 10.75;
        double b = 3.25;
        
        System.out.println("足し算: " + (a + b));
        System.out.println("引き算: " + (a - b));
        System.out.println("掛け算: " + (a * b));
        System.out.println("割り算: " + (a / b));
    }
}

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. float 型を使う場面(double との違い)

4. float 型を使う場面(double との違い)
4. float 型を使う場面(double との違い)

Java では、通常 double 型を使うのが一般的ですが、特定の場面では float 型を使うこともあります。

float 型の特徴

  • メモリ使用量が少ない(32ビット)
  • 精度が低い(小数点以下の桁数が少ない)
  • グラフィック処理やゲーム開発に向いている

float 型の使用例

次のプログラムでは、float 型を使って小数の計算を行います。


public class FloatExample {
    public static void main(String[] args) {
        float height = 175.5f;
        float weight = 68.2f;
        
        System.out.println("身長: " + height + " cm");
        System.out.println("体重: " + weight + " kg");
    }
}

float 型の注意点

float 型は精度が低いため、計算結果に誤差が生じることがあります。double 型のほうが高精度な計算に適しています。


public class FloatPrecisionExample {
    public static void main(String[] args) {
        float value = 1.0f / 3.0f;
        System.out.println("1 ÷ 3 の結果: " + value);
    }
}

5. 小数型を使った簡単な計算プログラム

5. 小数型を使った簡単な計算プログラム
5. 小数型を使った簡単な計算プログラム

小数を扱うデータ型を使って、簡単な計算プログラムを作ってみましょう。

商品の割引計算

次のプログラムでは、double 型を使って商品の割引価格を計算します。


public class DiscountCalculator {
    public static void main(String[] args) {
        double originalPrice = 2000.0;
        double discountRate = 0.2; // 20% 割引
        double finalPrice = originalPrice - (originalPrice * discountRate);
        
        System.out.println("元の価格: " + originalPrice + "円");
        System.out.println("割引後の価格: " + finalPrice + "円");
    }
}

円の面積を計算する

次のプログラムでは、円の半径を入力して円の面積を求めます。


public class CircleArea {
    public static void main(String[] args) {
        double radius = 5.5;
        double area = Math.PI * radius * radius;
        
        System.out.println("半径: " + radius + " cm");
        System.out.println("円の面積: " + area + " cm²");
    }
}

float 型を使った計算

次のプログラムでは、float 型を使って BMI(体格指数)を計算します。


public class BMICalculator {
    public static void main(String[] args) {
        float weight = 70.5f;
        float height = 1.75f;
        float bmi = weight / (height * height);
        
        System.out.println("体重: " + weight + " kg");
        System.out.println("身長: " + height + " m");
        System.out.println("BMI: " + bmi);
    }
}

このように、float 型や double 型を使えば、小数を含む計算を簡単に行うことができます。場面に応じて適切なデータ型を選びましょう。

6. 小数型の計算時の注意点(丸め誤差など)

6. 小数型の計算時の注意点(丸め誤差など)
6. 小数型の計算時の注意点(丸め誤差など)

Java で float 型や double 型を使うときに注意しなければならないのが「丸め誤差」です。

丸め誤差とは?

コンピュータは 2 進数で計算を行います。そのため、10 進数では正確に表せる小数も、2 進数では近似値としてしか扱えないことがあります。これが「丸め誤差」と呼ばれる現象です。

丸め誤差の例


public class RoundingErrorExample {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.2;
        double sum = a + b;

        System.out.println("0.1 + 0.2 の計算結果: " + sum);
    }
}

このコードを実行すると、0.1 + 0.2 の結果は 0.3 ではなく、0.30000000000000004 という値が表示されることがあります。これは、コンピュータが小数を正確に表現できないために起こる誤差です。

7. 小数型を使うときのベストプラクティス(適切な選び方)

7. 小数型を使うときのベストプラクティス(適切な選び方)
7. 小数型を使うときのベストプラクティス(適切な選び方)

小数を扱うときは、適切なデータ型を選ぶことが重要です。

float 型と double 型の使い分け

  • float 型: メモリの使用を抑えたい場合や、精度がそれほど重要でない場合(例: ゲームやグラフィック処理)
  • double 型: 精度が必要な一般的な計算(例: 科学計算、金融計算)

精度が必要な場合の対策

精度が必要な場合、演算結果を四捨五入する方法もあります。


public class RoundingExample {
    public static void main(String[] args) {
        double value = 3.1415926535;
        double rounded = Math.round(value * 100.0) / 100.0;

        System.out.println("元の値: " + value);
        System.out.println("小数点2桁までの丸め: " + rounded);
    }
}

8. 練習問題:小数型を使った簡単な計算プログラムを作ろう

8. 練習問題:小数型を使った簡単な計算プログラムを作ろう
8. 練習問題:小数型を使った簡単な計算プログラムを作ろう

最後に、小数型を使った計算プログラムを実際に作ってみましょう。

練習問題 1: 商品の割引価格を計算する


public class DiscountCalculator {
    public static void main(String[] args) {
        double price = 2000.0;
        double discountRate = 0.2; // 20% 割引
        double finalPrice = price - (price * discountRate);

        System.out.println("元の価格: " + price + "円");
        System.out.println("割引後の価格: " + finalPrice + "円");
    }
}

練習問題 2: BMI(体格指数)を計算する


public class BMICalculator {
    public static void main(String[] args) {
        double weight = 70.5;
        double height = 1.75;
        double bmi = weight / (height * height);

        System.out.println("体重: " + weight + " kg");
        System.out.println("身長: " + height + " m");
        System.out.println("BMI: " + bmi);
    }
}

練習問題 3: 円の面積を計算する


public class CircleAreaCalculator {
    public static void main(String[] args) {
        double radius = 5.5;
        double area = Math.PI * radius * radius;

        System.out.println("半径: " + radius + " cm");
        System.out.println("円の面積: " + area + " cm²");
    }
}

このように、float 型や double 型を使ってさまざまな計算を行うことができます。場面に応じて適切なデータ型を選びましょう。

Javaの変数・データ型の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク