[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;
}切り捨て結果: 5floor関数は、負の数に対しても正しく動作し、常に小さい方の整数に切り捨てます。
キャストを使った切り捨て
キャストを用いることで、小数を整数に変換し、小数点以下を切り捨てることができます。
これは、最もシンプルな方法の一つです。
#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関数やキャストを用いることで、さまざまな状況に応じた切り捨てが可能です。
この記事を通じて、切り捨ての基本的な方法と応用例を理解し、適切な場面での使用方法を学ぶことができました。
これを機に、実際のプログラムで切り捨てを活用し、数値処理の精度を向上させてみてください。
 
![[C言語] 小数を含む数値を整数に切り上げする方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2892.png)
![[C言語] 小数点第2位で数値を切り上げする方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2891.png)
![[C言語] 小数点第1位で数値を切り上げする方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2890.png)
![[C言語] 数値を切り上げるcell関数を自作する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2889.png)
![[C言語] 小数点第2位で小数部分を切り捨てする方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2888.png)
![[C言語] 数値を切り捨てする関数を自作する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2886.png)
![[C言語] 負数を切り捨てする方法を解説](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2885.png)
![[C言語] floor関数を使って切り捨てする方法を解説](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2884.png)
![[C言語] double型の数値で切り捨てする方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2883.png)
![[C言語] 小数点第3位で四捨五入する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2882.png)
![[C言語] 小数点第2位で四捨五入する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2881.png)
![[C言語] round関数を使わずに四捨五入する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-2880.png)