0Pricing
C Academy · レッスン

整数と浮動小数点数の変換

精度に関する注意点です。

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

数値の2つの世界

Cには整数(正確で小数なし)と浮動小数点数(近似値で小数あり)があります。両者の間で変換すると、値の格納方法が変わります。

#include <stdio.h>
int main(void) {
    int i = 10;
    double d = 10.5;
    printf("%d %.1f\n", i, d);
    return 0;
}

intからdoubleへの拡張

ほとんどのintの値はdoubleで正確に表現できるため、拡張は安全です。

#include <stdio.h>
int main(void) {
    int n = 1000;
    double d = n;
    printf("d = %.1f\n", d);
    return 0;
}

doubleからintへの縮小

doubleからintへ変換すると、ゼロ方向に切り捨てられ、情報が失われる可能性があります。

#include <stdio.h>
int main(void) {
    double d = 12.75;
    int n = (int)d;
    printf("n = %d\n", n);
    return 0;
}

負の値の切り捨て

ゼロ方向への切り捨てでは、-2.9は-3ではなく-2になります。

#include <stdio.h>
int main(void) {
    double d = -2.9;
    int n = (int)d;
    printf("n = %d\n", n);
    return 0;
}

floatとdoubleの精度

floatは約7桁、doubleは約15桁の有効数字を保持します。doubleからfloatへの変換では精度が失われます。

#include <stdio.h>
int main(void) {
    double d = 3.14159265358979;
    float f = (float)d;
    printf("%.5f\n", f);
    return 0;
}

大きなintからfloatへ

非常に大きなintはfloatで正確に表現できない場合があり、丸められた結果になります。

#include <stdio.h>
int main(void) {
    int big = 16777217;
    float f = (float)big;
    printf("%.1f\n", f);
    return 0;
}

丸めと切り捨て

キャストでは切り捨てが行われます。丸めるには、(正の値の場合)先に0.5を加えるか、ライブラリ関数を使用してください。

#include <stdio.h>
int main(void) {
    double d = 4.6;
    int truncated = (int)d;
    int rounded = (int)(d + 0.5);
    printf("%d %d\n", truncated, rounded);
    return 0;
}

平均の計算

整数の平均を求めるには、小数部分を保つために浮動小数点数の除算が必要です。

#include <stdio.h>
int main(void) {
    int sum = 7, count = 2;
    double avg = (double)sum / count;
    printf("avg = %.2f\n", avg);
    return 0;
}

浮動小数点数の等値比較の落とし穴

浮動小数点数は近似値なので、==で比較するのは危険です。小さな許容誤差の範囲内で比較してください。

#include <stdio.h>
#include <math.h>
int main(void) {
    double a = 0.1 + 0.2;
    if (fabs(a - 0.3) < 1e-9)
        printf("close enough\n");
    return 0;
}

条件式での混在

intとdoubleを比較するとintが昇格されるため、浮動小数点数として比較が行われます。

#include <stdio.h>
int main(void) {
    int n = 3;
    double d = 3.5;
    if (n < d)
        printf("3 < 3.5\n");
    return 0;
}

適切な型の選択

個数やインデックスには整数を、測定値や比率には浮動小数点数を使用してください。

#include <stdio.h>
int main(void) {
    int items = 4;
    double pricePer = 2.5;
    printf("total = %.2f\n", items * pricePer);
    return 0;
}

クイックチェック

整数と浮動小数点数の変換についての理解度を確認しましょう。

まとめ:整数と浮動小数点数の変換

型によって数値がどのように変化するかを学びました。

  • intからdoubleへの変換は通常、安全に拡張されます
  • doubleからintへの変換ではゼロ方向に切り捨てられます
  • floatはdoubleより少ない桁数を保持します
  • 0.5を加えるかライブラリ関数を使って丸めます
  • 浮動小数点数では==を避け、許容誤差を使用します

よくある質問

「整数と浮動小数点数の変換」レッスンは無料ですか?

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

「整数と浮動小数点数の変換」で何を学びますか?

精度に関する注意点です。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「整数と浮動小数点数の変換」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 暗黙の変換
  2. 明示的なキャスト
  3. 整数と浮動小数点数の変換
  4. 変換の落とし穴
← C Academyに戻る