整数と浮動小数点数の変換
精度に関する注意点です。
「整数と浮動小数点数の変換」は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フィードバックを取得できます。ローカル設定は不要です。