import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalTest {
public static void main(String[] args) {
String raw1 = "99.9454";
String raw2 = "-10.0354";
System.out.println(acc(raw1));
System.out.println(acc(raw2));
}
public static String acc(String raw) {
// 中间计算结果
BigDecimal temp = new BigDecimal(raw);
temp = temp.setScale(2, RoundingMode.HALF_UP);
String str = temp.toString();
char tail = str.charAt(str.length() - 1);
// 正负取舍策略不同
if (temp.compareTo(new BigDecimal(0)) < 0) {
if (tail > '5') {
tail = '5';
} else {
tail = '0';
temp = temp.add(new BigDecimal("0.1"));
}
}
if (temp.compareTo(new BigDecimal(0)) > 0) {
if (tail < '5') {
tail = '5';
} else {
tail = '0';
temp = temp.add(new BigDecimal("0.1"));
}
}
str = temp.toString();
String head = str.substring(0, str.length() - 1);
BigDecimal result = new BigDecimal(head + tail);
return result.toString();
}
}