【C言語】trunc()・truncf()・truncl()で浮動小数点数を切り捨てる方法
この記事では、C言語の数学関数である trunc()、truncf()、truncl() の3つの関数について解説します。これらの関数は、浮動小数点値の小数部分を切り捨て、整数部分だけを取り出すために使用されます。いずれも <math.h> ヘッダーをインクルードして利用します。
trunc() 関数
trunc() 関数は、double 型の値を切り捨てるための関数です。引数として渡された値の小数部分を削除し、整数部分のみを double 型で返します。構文は以下のとおりです。
double trunc(double argument)
使用例
#include <stdio.h>
#include <math.h>
int main(void) {
double a, b, x, y;
x = 53.26;
y = 75.86;
a = trunc(x);
b = trunc(y);
printf("a の値: %lf\n", a);
printf("b の値: %lf\n", b);
return 0;
}実行結果
a の値: 53.000000 b の値: 75.000000
truncf() 関数
truncf() 関数は、float 型の値を切り捨てるための関数です。動作は trunc() と同様ですが、引数と戻り値が float 型である点が異なります。構文は以下のとおりです。
float truncf(float argument)
使用例
#include <stdio.h>
#include <math.h>
int main(void) {
float a, b, x, y;
x = 53.26f;
y = 75.86f;
a = truncf(x);
b = truncf(y);
printf("a の値: %f\n", a);
printf("b の値: %f\n", b);
return 0;
}実行結果
a の値: 53.000000 b の値: 75.000000
truncl() 関数
truncl() 関数は、trunc() や truncf() と同様の動作をしますが、最大の違いは long double 型の値を扱える点です。より高い精度が必要な場面で、long double 型の値から小数部分を切り捨て、整数部分のみを返します。構文は以下のとおりです。
long double truncl(long double argument)
使用例
#include <stdio.h>
#include <math.h>
int main(void) {
long double a, b, x, y;
x = 53547.55555555555L;
y = 78547.55555555523L;
a = truncl(x);
b = truncl(y);
printf("a の値: %Lf\n", a);
printf("b の値: %Lf\n", b);
return 0;
}実行結果
a の値: 53547.000000 b の値: 78547.000000
まとめ
3つの関数はいずれも浮動小数点数の小数部分を切り捨てる関数ですが、対応するデータ型が異なります。trunc() は double 型、truncf() は float 型、truncl() は long double 型用です。負の値の場合はゼロの方向へ切り捨てられる(例:-53.26 → -53.0)点にも注意しましょう。用途に応じて適切な関数を選択することで、精度を保ちながら効率的に切り捨て処理を実装できます。
-
C言語の定数(const)とは?基本構文から種類・実行例まで徹底解説
定数(Constant)とは、一度値を定義するとプログラムの実行中にその値が一切変わらないものを指します。固定値を参照するために、変数を定数として宣言することができます。定数は「リテラル」と呼ばれることもあります。C言語では、const キーワードを使用して定数を定義します。定数の基本構文C言語で定数を宣言する際の基本的な構文は以下の通りです。const 型 変数名; または const 型 *ポインタ変数名;定数の主な種類C言語で扱われる定数には、以下のような種類があります。整数定数 … 例:1、0、34、4567浮動小数点定数 … 例:0.0、156.89、23.4568進数・16進数定数
-
C言語のシフト演算とは?左シフト・右シフト・補数の基本をわかりやすく解説
問題 C言語を使用して、ある数値に対する左シフト・右シフト・補数(ビット反転)を求める簡単なプログラムを作成するには、どのようにすればよいのでしょうか。 解決方法 左シフト(<<) 変数の値を1ビットだけ左へシフトすると、その値は2倍になります。「a × 2」を計算したのと同じ結果です。 例:a = 10 の場合、a << 1 = 20 右シフト(>>) 変数の値を1ビットだけ右へシフトすると、その値は元の半分になります。「a ÷ 2」の整数除算と同じ結果です。 例:a = 10 の場合、a >> 1 = 5 サンプルプログラム 以下は、シ