丸めと絶対値
floor、ceil、round、fabsを使います。
「丸めと絶対値」はCoddyKit上の無料C Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全4レッスンが含まれています。
丸めと絶対値
このレッスンでは、数値を調整する関数を扱います。丸めにはfloor、ceil、round、truncを使い、絶対値にはfabsを使います。
これらはすべてmath.hにあり、double型の値を扱います。
floor関数
floor(x)は、負の無限大の方向に、最も近い整数へ切り下げます。
したがって、floor(3.9)は3.0、floor(-1.2)は-2.0です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("%.1f\n", floor(3.9));
printf("%.1f\n", floor(-1.2));
return 0;
}ceil関数
ceil(x)は、正の無限大の方向に、最も近い整数へ切り上げます。
したがって、ceil(3.1)は4.0、ceil(-1.8)は-1.0です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("%.1f\n", ceil(3.1));
printf("%.1f\n", ceil(-1.8));
return 0;
}round関数
round(x)は、最も近い整数に丸めます。ちょうど中間の場合は、0から遠ざかる方向に丸めます。
したがって、round(2.5)は3.0、round(2.4)は2.0です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("%.1f\n", round(2.5));
printf("%.1f\n", round(2.4));
return 0;
}trunc関数
trunc(x)は小数部分を単純に切り捨て、常に0に近づく方向へ移動します。
したがって、trunc(3.9)は3.0、trunc(-3.9)は-3.0です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("%.1f\n", trunc(3.9));
printf("%.1f\n", trunc(-3.9));
return 0;
}4つの関数を比較する
値が2.7の場合、結果は次のように異なります。
floor(2.7)= 2.0(切り下げ)ceil(2.7)= 3.0(切り上げ)round(2.7)= 3.0(最も近い値)trunc(2.7)= 2.0(0に近づける)
目的に合った関数を選んでください。
fabsで絶対値を求める
fabs(x)は、浮動小数点数の絶対値を返します。絶対値とは0からの距離で、常に負ではありません。
したがって、fabs(-7.5)は7.5です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("%.1f\n", fabs(-7.5));
printf("%.1f\n", fabs(7.5));
return 0;
}fabsとabsの違い
注意してください。abs(stdlib.hにあります)は整数を扱い、fabs(math.hにあります)はdoubleを扱います。
doubleにabsを使うと、先に小数部分が切り捨てられます。浮動小数点数には必ずfabsを使ってください。
int型に変換する
これらの関数はdoubleを返します。整数をintとして格納するには、結果をキャストしてください。
まずroundで丸めてからキャストするのが安全です。そうすれば、2.999のような値が誤って2になることを防げます。
#include <stdio.h>
#include <math.h>
int main(void) {
double x = 4.6;
int whole = (int)round(x);
printf("whole = %d\n", whole);
return 0;
}距離の例
fabsは、どちらの値が大きいかに関係なく、2つの値の差を測るのに便利です。
ここでは、2つの温度の差を求めます。
#include <stdio.h>
#include <math.h>
int main(void) {
double a = 5.0, b = 12.5;
printf("gap = %.1f\n", fabs(a - b));
return 0;
}小数点以下の桁数を指定して丸める
小数点以下2桁に丸めるには、100を掛けてから丸め、その後100で割ります。
この方法ではroundを使って、金額のような値を整えられます。
#include <stdio.h>
#include <math.h>
int main(void) {
double price = 3.14159;
double r = round(price * 100.0) / 100.0;
printf("%.2f\n", r);
return 0;
}クイックチェック
それぞれの丸め関数の動作を思い出しましょう。
まとめ
floor(切り下げ)、ceil(切り上げ)、round(最も近い値)、trunc(0に近づける)、そしてdoubleの絶対値を求めるfabsを学びました。
浮動小数点数にはabsではなくfabsを使い、整数が必要な場合はintにキャストすることを覚えておいてください。math.hのコースを最後まで終えました。お疲れさまでした。
よくある質問
「丸めと絶対値」レッスンは無料ですか?
はい。「丸めと絶対値」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全4レッスンが含まれています。
「丸めと絶対値」で何を学びますか?
floor、ceil、round、fabsを使います。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「丸めと絶対値」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。