[C言語] 小数点第1位を切り捨てする方法
C言語で小数点第1位を切り捨てるには、浮動小数点数を整数に変換する方法が一般的です。
例えば、変数double num
がある場合、(int)num
とすることで小数点以下を切り捨てた整数部分を取得できます。
この方法は、整数部分のみを必要とする場合に便利です。
ただし、負の数の場合は注意が必要で、切り捨ての結果が期待と異なることがあります。
そのため、特定の精度での切り捨てが必要な場合は、他の方法を検討することも重要です。
小数点第1位を切り捨てる基本的な方法
小数点以下の数値を切り捨てる方法は、C言語においていくつかの手法があります。
ここでは、代表的な方法を3つ紹介します。
floor関数を使った切り捨て
floor関数
は、指定した小数の小数点以下を切り捨てて、最も近い整数に変換します。
この関数はmath.h
ライブラリに含まれています。
#include <stdio.h>
#include <math.h>
int main() {
double num = 5.7;
// floor関数を使って小数点以下を切り捨て
double result = floor(num);
printf("切り捨て結果: %.0f\n", result);
return 0;
}
切り捨て結果: 5
floor関数
は、負の数に対しても正しく動作し、常に小さい方の整数に切り捨てます。
キャストを使った切り捨て
キャストを用いることで、小数を整数に変換し、小数点以下を切り捨てることができます。
これは、最もシンプルな方法の一つです。
#include <stdio.h>
int main() {
double num = 5.7;
// キャストを使って小数点以下を切り捨て
int result = (int)num;
printf("切り捨て結果: %d\n", result);
return 0;
}
切り捨て結果: 5
キャストによる切り捨ては、正の数に対してはfloor関数
と同様の結果を返しますが、負の数に対しては異なる動作をすることがあります。
int型への変換による切り捨て
int型
への変換も、キャストと同様に小数点以下を切り捨てる方法です。
これは、変数を直接int型
に変換することで実現します。
#include <stdio.h>
int main() {
double num = 5.7;
// int型への変換による小数点以下の切り捨て
int result = num;
printf("切り捨て結果: %d\n", result);
return 0;
}
切り捨て結果: 5
この方法もキャストと同様に、正の数に対しては問題なく動作しますが、負の数に対しては注意が必要です。
int型
への変換は、単に小数点以下を無視するため、負の数の場合はfloor関数
とは異なる結果を返すことがあります。
切り捨ての応用例
小数点以下の切り捨ては、さまざまな場面で応用が可能です。
ここでは、いくつかの応用例を紹介します。
配列内の小数を一括で切り捨てる
配列内のすべての小数を一括で切り捨てることができます。
これにより、データセット全体を整数に変換することが可能です。
#include <stdio.h>
#include <math.h>
int main() {
double numbers[] = {3.14, 2.71, 1.41, 1.73};
int size = sizeof(numbers) / sizeof(numbers[0]);
int results[size];
for (int i = 0; i < size; i++) {
// floor関数を使って各要素を切り捨て
results[i] = (int)floor(numbers[i]);
}
printf("切り捨て結果: ");
for (int i = 0; i < size; i++) {
printf("%d ", results[i]);
}
printf("\n");
return 0;
}
切り捨て結果: 3 2 1 1
この例では、floor関数
を用いて配列内の各要素を切り捨て、整数の配列に変換しています。
小数点以下の桁数を指定して切り捨てる
特定の桁数まで小数点以下を切り捨てることも可能です。
これは、数値を特定の精度で扱いたい場合に便利です。
#include <stdio.h>
#include <math.h>
double truncate(double num, int decimal_places) {
double factor = pow(10, decimal_places);
return floor(num * factor) / factor;
}
int main() {
double num = 5.6789;
// 小数点以下2桁まで切り捨て
double result = truncate(num, 2);
printf("切り捨て結果: %.2f\n", result);
return 0;
}
切り捨て結果: 5.67
この例では、truncate関数
を使用して、小数点以下2桁までの精度で切り捨てを行っています。
切り捨てを用いた数値の丸め込み
切り捨てを利用して、数値を特定の基準に丸め込むこともできます。
例えば、10の倍数に丸める場合などです。
#include <stdio.h>
int roundDownToNearestTen(int num) {
return (num / 10) * 10;
}
int main() {
int num = 57;
// 10の倍数に丸め込み
int result = roundDownToNearestTen(num);
printf("丸め込み結果: %d\n", result);
return 0;
}
丸め込み結果: 50
この例では、整数を10の倍数に丸め込むために、整数除算を利用して切り捨てを行っています。
これにより、数値を特定の基準に合わせて調整することができます。
まとめ
小数点以下の切り捨ては、C言語で数値を扱う際に頻繁に使用される操作です。
floor関数
やキャストを用いることで、さまざまな状況に応じた切り捨てが可能です。
この記事を通じて、切り捨ての基本的な方法と応用例を理解し、適切な場面での使用方法を学ぶことができました。
これを機に、実際のプログラムで切り捨てを活用し、数値処理の精度を向上させてみてください。