小数点以下n桁で四捨五入……みたいなことをするサンプル。
ソースコード
import java.math.*;
import java.text.*;
public class RoundHalfUp {
public static void main(String[] args) {
double[] testcase = {
-1.123456789, -1.0987654321, -0.6543210987, -0.5432198, -0.421,
-0.0, 0.0,
0.4000000000001, 0.599999999991, 0.600004, 1.0000005, 1.1};
System.out.println("----- BigDecimal.ROUND_HALF_UP -----");
for(int i=0; i<testcase.length; i++){
System.out.println(
f(testcase[i]) + " -> " + f(round(testcase[i])));
}
}
private static String f(double d){
return df.format(d);
}
private static DecimalFormat df =
new java.text.DecimalFormat("###.#############");
private static double round(double d){
int newScale = 6; // 小数点以下6桁まで求める
BigDecimal bd = new BigDecimal(d);
BigDecimal bd2 = bd.setScale(newScale, BigDecimal.ROUND_HALF_UP);
double d2 = bd2.doubleValue();
return d2;
}
}
出力結果
----- BigDecimal.ROUND_HALF_UP -----
-1.123456789 -> -1.123457
-1.0987654321 -> -1.098765
-0.6543210987 -> -0.654321
-0.5432198 -> -0.54322
-0.421 -> -0.421
-0 -> 0
0 -> 0
0.4000000000001 -> 0.4
0.599999999991 -> 0.6
0.600004 -> 0.600004
1.0000005 -> 1.000001
1.1 -> 1.1
tags: zlashdot Java Java
Posted by NI-Lab. (@nilab)