0Pricing
Java Academy · レッスン

Math クラスの基本

Math.abs、Math.pow、Math.sqrt、Math.random など、頻繁に使う Math のメソッドを使用します。

「Math クラスの基本」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

Mathクラス

java.lang.Mathクラスは、一般的な数学演算のための静的ユーティリティメソッドを提供します。常に使用できるため、importは必要ありません。

絶対値と符号

Math.abs()は絶対値(負でない値)を返します。Math.signum()は、符号に応じて-1.0、0.0、または1.0を返します。

System.out.println(Math.abs(-42));      // 42
System.out.println(Math.abs(3.14));     // 3.14
System.out.println(Math.signum(-5.0));  // -1.0
System.out.println(Math.signum(0.0));   //  0.0
System.out.println(Math.signum(7.0));   //  1.0

べき乗、平方根、立方根

べき乗にはMath.pow(base, exp)、平方根にはMath.sqrt()、立方根にはMath.cbrt()を使用します。

System.out.println(Math.pow(2, 10));  // 1024.0
System.out.println(Math.sqrt(144));   // 12.0
System.out.println(Math.cbrt(27));    // 3.0

// Hypotenuse of a right triangle (a=3, b=4)
double hyp = Math.sqrt(Math.pow(3, 2) + Math.pow(4, 2));
System.out.println(hyp); // 5.0

最小値、最大値、クランプ

Math.min()とMath.max()は、2つの値のうち小さい方または大きい方を返します。これらを組み合わせると、値を範囲内に収めるクランプを実装できます。

int a = 10, b = 20;
System.out.println(Math.min(a, b)); // 10
System.out.println(Math.max(a, b)); // 20

// Clamp value between 0 and 100
int clamp(int value, int min, int max) {
    return Math.max(min, Math.min(value, max));
}
System.out.println(clamp(150, 0, 100)); // 100
System.out.println(clamp(-5,  0, 100)); // 0
System.out.println(clamp(75,  0, 100)); // 75

床関数、天井関数、丸め

Math.floor()は切り下げ、Math.ceil()は切り上げ、Math.round()は最も近い整数に丸めます(0.5は切り上げ)。

double price = 9.3;
System.out.println(Math.floor(price));  // 9.0
System.out.println(Math.ceil(price));   // 10.0
System.out.println(Math.round(price));  // 9

double shipping = 3.5;
System.out.println(Math.round(shipping)); // 4 (half-up)

// Round to 2 decimal places
double tax = 7.5678;
double rounded = Math.round(tax * 100.0) / 100.0;
System.out.println(rounded); // 7.57

対数と指数

Math.log()は自然対数(底e)を計算し、Math.log10()は常用対数を計算し、Math.exp()はe^xを計算します。

System.out.println(Math.log(Math.E));   // 1.0
System.out.println(Math.log10(1000));   // 3.0
System.out.println(Math.exp(1));        // 2.718281828...

// Change of base: log2(8)
double log2 = Math.log(8) / Math.log(2);
System.out.println(log2); // 3.0

// Compound interest: P * e^(r*t)
double principal = 1000, rate = 0.05, years = 10;
double amount = principal * Math.exp(rate * years);
System.out.printf("Amount: %.2f%n", amount); // 1648.72

三角関数メソッド

Mathが提供する三角関数は、ラジアン単位の角度を受け取ります。Math.toRadians()を使って度をラジアンに変換してください。

double angle = Math.toRadians(45);
System.out.printf("sin(45): %.4f%n", Math.sin(angle)); // 0.7071
System.out.printf("cos(45): %.4f%n", Math.cos(angle)); // 0.7071
System.out.printf("tan(45): %.4f%n", Math.tan(angle)); // 1.0000

// Distance between two GPS coordinates (simplified)
double lat1 = Math.toRadians(40.7128);
double lat2 = Math.toRadians(34.0522);
double deltaLat = lat2 - lat1;
System.out.printf("Delta lat (rad): %.4f%n", deltaLat);

乱数

Math.random()は[0.0, 1.0)の範囲のdoubleを返します。整数を範囲内で得るには、乗算してキャストします。より良い乱数性が必要な場合は、java.util.Randomを使用してください。

// Random double [0.0, 1.0)
double rand = Math.random();

// Random int [min, max] inclusive
int min = 1, max = 6;
int dice = (int) (Math.random() * (max - min + 1)) + min;
System.out.println("Dice roll: " + dice); // 1–6

// Prefer java.util.Random for more features
import java.util.Random;
Random rng = new Random();
int secureRoll = rng.nextInt(6) + 1; // cleaner API
System.out.println("Secure roll: " + secureRoll);

定数:PIとE

Math.PIとMath.Eは、πとオイラー数eを表すdouble定数です。幾何計算や金融計算に使用します。

System.out.println(Math.PI); // 3.141592653589793
System.out.println(Math.E);  // 2.718281828459045

// Circle area and circumference
double radius = 7.0;
double area = Math.PI * Math.pow(radius, 2);
double circumference = 2 * Math.PI * radius;

System.out.printf("Area: %.2f%n", area);           // 153.94
System.out.printf("Circumference: %.2f%n", circumference); // 43.98

Math.floorDivとMath.floorMod

Math.floorDiv()とMath.floorMod()は、負の数を一貫して処理します。負の数で予想外の結果になることがある/演算子や%演算子とは異なります。

// Regular % can be negative with negative dividend
System.out.println(-7 % 3);           // -1 (may surprise you)
System.out.println(Math.floorMod(-7, 3)); // 2  (always non-negative)

// Floor division rounds toward negative infinity
System.out.println(-7 / 3);              // -2 (truncates toward zero)
System.out.println(Math.floorDiv(-7, 3)); // -3 (floors down)

// Use floorMod for cyclic calculations like days of week
int day = Math.floorMod(-1, 7); // Sunday (6), not -1
System.out.println(day); // 6

実践:距離と物理

物理の問題にMathメソッドを適用します。三角関数と平方根を使って、投射物の飛距離を計算します。

// Projectile range: R = v^2 * sin(2*angle) / g
double velocity = 50.0;   // m/s
double angleDeg = 45.0;   // degrees
double g = 9.81;          // m/s^2

double angleRad = Math.toRadians(angleDeg);
double range = Math.pow(velocity, 2) * Math.sin(2 * angleRad) / g;

System.out.printf("Projectile range: %.1f m%n", range); // 254.8 m

クイックチェック

Math.floorMod(-7, 3)の出力は何でしょうか?

復習:Mathクラス

重要なポイント:

  • 基本的な比較にはMath.abs、Math.min、Math.maxを使用します
  • べき乗と平方根・立方根にはMath.pow、Math.sqrt、Math.cbrtを使用します
  • 丸めにはMath.floor、Math.ceil、Math.roundを使用します
  • 対数と指数にはMath.log、Math.log10、Math.expを使用します
  • Math.sin、Math.cos、Math.tanはラジアンを使用します。Math.toRadiansで変換してください
  • Math.floorModは循環演算で負の数を適切に処理します
  • Math.PIとMath.Eは組み込み定数です

よくある質問

「Math クラスの基本」レッスンは無料ですか?

はい。「Math クラスの基本」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「Math クラスの基本」で何を学びますか?

Math.abs、Math.pow、Math.sqrt、Math.random など、頻繁に使う Math のメソッドを使用します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Math クラスの基本」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Math クラスの基本
  2. 整数演算とオーバーフロー
  3. 金額計算のための BigDecimal
  4. NumberFormat と printf
← Java Academyに戻る