Thinkers'Studio
JavaとC言語の自習ツール
小数点以下第1位で切り上げ/切り捨てするプログラム例( C言語版 )

int型に切り上げ/切り捨てする

 C言語では、math.h の標準関数 ceil と floor により、切り上げ/切り捨てをすることができます。
 ここでは、同様の処理を自前で行う例を紹介します。
 自作の関数は int型を返し、 切り上げ/切り捨ての仕方は次のような扱いとします。

切り上げ --- その値以上で最小の整数を返す
  例1)15.4 → 16
  例2)15.0 → 15
  例3)-5.7 → -5 負の値は0に近い(大きい)方へ
切り捨て --- その値以下で最大の整数を返す
  例4)15.4 → 15
  例5)15.0 → 15
  例6)-5.7 → -6 負の値は0から遠い(小さい)方へ

【 小数点以下第1位で切り上げ/切り捨てするプログラム例(C言語版)】
#include <stdio.h>
int kiriage( double x )
{
    return (int)( x < 0.0 ? x : x+0.9 );
}
int kirisute( double x )
{
    return (int)( x < 0.0 ? x-0.9 : x );
}
main()
{
    double d;

    while( 1 ) {
        printf( "浮動小数点数を指定:" );
        if( scanf( "%lf", &d ) != 1 ) break;
        printf("小数点以下第1位で切り上げ = %d\n", kiriage( d ) );
        printf("小数点以下第1位で切り捨て = %d\n", kirisute( d ) );
    }
}

切り上げは
 小数点以下第1位で切り上げるために、元の値に 0.9 を足してから、小数点以下を切り捨てます。
 .1 〜.9 なら元の値の整数部+1 の整数になり、.0 なら整数部のままです。
整数型に切り捨てるには
 (int) を前に付けて int型にキャスト(強制的型変換)します。
値が負のときは少し配慮が要ります
 負の数をキャストして小数点以下を切り捨てると、元の値より大きく(0 に近づく)なります。
 上で示した仕様にするため、切り上げでは 0.9 を足さずにキャストし、切り捨てでは 0.9 を引いてキャストしています。

(今回のクイズです)
 上の自作の関数を呼び出して、小数点以下第2位を切り上げ/切り捨てした結果を表示したいと思います。
 青文字行をどのように書き換えればよいでしょうか?
  ヒント:小数点以下第2位が第1位に来るようにしてから 各関数に渡し、返ってきた結果を元の位に戻します。
    (答えは、次回のC言語の Tips で ・・・)

[ 関連記事 ] 四捨五入するには

前回のクイズの答え: (前回の問題を見る
    score[4][2] = 90;
 簡単でしたね。添字は 0 から、行と列の次元を間違えないようにして指定します。