System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【Java Silver対策】小数を整数に。「キャスト」と「切り捨てルール」

🟢 はじめに

Javaの勉強を進めていると、「あれ?このデータは小数doubleなど)だけど、今用意している箱は整数int)専用だぞ…?」と困ってしまう場面に出くわすことがあると思います。

今回は、そんな時に使える「キャスト」の使い方と、初心者が絶対に覚えておきたい「小数点以下切り捨てのルール」について、RPGゲームのダメージ計算を例に分かりやすく解説します!


⚔️ オリジナルコードで実験!魔法のダメージ計算

まずは、こちらのJavaプログラムを見てみたいと思います。

魔法使いがモンスターに攻撃するシーンを想像してください🧙‍♀️

public class MagicAttack {
    public static void main(String[] args) {
        // 1. 魔法の威力を計算(結果は小数になりました)
        double magicPower = 99.9;
        
        // 2. モンスターに与える実際のダメージは「整数」のみ!
        // (int) という魔法を使って、小数を整数にムリヤリ変身させます
        int actualDamage = (int) magicPower;
        
        // 3. 果たしてダメージはいくつになるか?
        System.out.println("モンスターに与えたダメージ:" + actualDamage);
    }
}

魔法の威力magicPower)は 99.9 です。

これを (int) を使って整数に変身させた場合、実際のダメージ(actualDamage)はいくつになると思いますか?

99.9なんだから、四捨五入して100ダメージになるはず!」
…と思いたいところですが、プログラムを実行するとコンソールにはこう表示されます。

モンスターに与えたダメージ:99

なんと、100ではなく99になってしまいました。


📦 なぜ99になるのか?「キャスト」の厳しいルール

Javaの世界では、データを「📦」に例えることができます。

int整数だけが入る箱小数は絶対に入らない!)

double小数も入る、ちょっと大きな箱

99.9 という小数は、そのままでは int の箱に入りません。

そこで登場するのが (int) という魔法(これを専門用語で「キャスト」と呼びます)です🪄

この魔法を唱えると、小数整数にムリヤリ変身させて箱に押し込むことができます。

ただし、この魔法にはとても厳格で容赦ないルールがあります。

それが、「小数点以下は、問答無用でバッサリ切り捨てる✂️」という掟です。


🗡️ 四捨五入ではなく「切り落とし」

キャストは、親切に四捨五入してくれるわけではありません。

小数点以下の部分を、問答無用でバッサリ切り捨てます。

99.1(int) を使う ➡️ 99

99.5(int) を使う ➡️ 99

99.9(int) を使う ➡️ 99

どれだけ「あと0.1で次の数字になるのに!」という惜しい状態(99.9など)であっても、小数点以下が存在する限り、無慈悲に切り捨てられて「99」になってしまいます。


✍️ まとめ

  • 小数のデータ(doubleなど)は、そのままでは整数の箱(int)に入れられない🙅‍♀️

  • (int) というキャストを使えば、整数に変身させることができる🧙‍♂️

  • キャストで小数を整数にすると、四捨五入ではなく「小数点以下はバッサリ切り捨て」になる✂️

計算結果がなんか1ズレてるぞ…?」というバグに遭遇した時は、この「キャストによる切り捨ての罠」にハマっていないか確認してみると良いと思います。

Java学習中の方の参考になれば幸いです🙌


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com