プログラマメモ2 - programmer no memo2

poj 3077 rounders 2007/11/12

3077 -- Rounders

丸めの問題です。

いつものごとく簡単そうな問題を選んでいます。

正直どうしていいかわからなくて、ごちゃごちゃしていたらacceptedされた感じです。
BigDecimalを使ってます。この使い方がいいのかどうかはわかりません。

precisionは精度。

HALF_UPの説明は下記

「もっとも近い数字」に丸めるモードです。ただし、両隣りの数字が等距離の場合は切り上げます。破棄される小数部が 0.5 以上の場合は RoundingMode.UP のように動作し、それ以外の場合は RoundingMode.DOWN のように動作します。これは我々の大半が小学校で習った丸めモードのことです。jdk1.5 javadoc RoundingMode


package p3077_Rounders;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (0 < n--) {
int a = scanner.nextInt();
System.out.println(round(a));
}
}

static int round(int a) {
BigDecimal decimal = new BigDecimal(a);
for (int i = decimal.precision() - 1; 1 <= i; i--)
decimal = decimal.round(new MathContext(i, RoundingMode.HALF_UP));

return decimal.intValue();
}

}

: