Thinkers'Studio
JavaとC言語の自習ツール
小数点以下第1位で切り上げ/切り捨てするプログラム例( Java版 )
 Java で切り上げ/切り捨てを行うプログラム例を2つ紹介します。
 ここで使う機能の切り上げ/切り捨ての仕方は、次のようなものです。
切り上げ --- その値以上で最小の整数を返す
  例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 】 --- Mathクラスの ceil, floor メソッドを使う例 ---
 これらのメソッドは、結果を double 値で返します。
class CeilandFloor {
    public static void main( String[] args ) {
        double d = -5.7;
        double d1, d2;

        d1 = Math.ceil( d );
        System.out.println( "小数点以下第1位で切り上げ = " + d1 );
        d2 = Math.floor( d );
        System.out.println( "小数点以下第1位で切り捨て = " + d2 );
    }
}
 実行結果
小数点以下第1位で切り上げ = -5.0
小数点以下第1位で切り捨て = -6.0

【 その2 】 --- BigDecimal クラスの丸め機能を使う例 ---
 setScale の最初の引数に、小数点以下第1位で丸める指示として 0 を指定します(第2位で丸めたければ 1 です)。
 次の引数に丸めモード ROUND_CEILING または ROUND_FLOOR を指定します。
import java.math.BigDecimal;
class CeilandFloor2 {
    public static void main( String[] args ) {
        double d = -5.7;

        BigDecimal b = new BigDecimal( String.valueOf(d) );
        BigDecimal b1 = b.setScale( 0, BigDecimal.ROUND_CEILING );
        System.out.println( "小数点以下第1位で切り上げ = " + b1 );

        BigDecimal b2 = b.setScale( 0, BigDecimal.ROUND_FLOOR );
        System.out.println( "小数点以下第1位で切り上げ = " + b2 );
    }
}
 実行結果
小数点以下第1位で切り上げ = -5
小数点以下第1位で切り捨て = -6
 BigDecimal の丸めモードには他にも種類があります。 四捨五入の例は 以前のTips(クイズの答え欄)で紹介しました。

(今回のクイズです)
 上の機能をキャストを使って自作する場合、下記の下線部 (1), (2) にはそれぞれどんな式を書けばよいでしょうか。

 // 変数dを小数点以下第1位で切り上げする
 int x1 =            (1)            
 // 変数dを小数点以下第1位で切り捨てする
 int x2 =            (2)            
 x1 に切り上げの結果、x2 に切り捨ての結果を代入します (ヒント:四捨五入の自作例 が参考になります)。
   (答えは、次回の Java の Tips で ・・・)

[ 関連記事 ] 四捨五入の自作例

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