到网上找的资料
BigDecimal.ROUND_HALF_UP 表示如果最后一位<5 则舍弃,如果>=5, 向前进一位。反之舍弃测试后public static void main(String args[]) {
BigDecimal a = new BigDecimal ("1.8256");
BigDecimal b = new BigDecimal ("1.8226");
System.out.println(a.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("b="+b.setScale(2, BigDecimal.ROUND_HALF_UP));
}输出:a=1.83
b=1.82
实现了我要的效果。
但是如果操作的是负数,那该怎么办?下面这方法显然不行
public static void main(String args[]) {
BigDecimal c = new BigDecimal ("1.8256");
BigDecimal d = new BigDecimal ("1.8226");
c = c.negate();
d = d.negate();
System.out.println("c="+c.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("d="+d.setScale(2, BigDecimal.ROUND_HALF_UP));}输出:c=-1.83
d=-1.82
BigDecimal.ROUND_HALF_UP 表示如果最后一位<5 则舍弃,如果>=5, 向前进一位。反之舍弃测试后public static void main(String args[]) {
BigDecimal a = new BigDecimal ("1.8256");
BigDecimal b = new BigDecimal ("1.8226");
System.out.println(a.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("b="+b.setScale(2, BigDecimal.ROUND_HALF_UP));
}输出:a=1.83
b=1.82
实现了我要的效果。
但是如果操作的是负数,那该怎么办?下面这方法显然不行
public static void main(String args[]) {
BigDecimal c = new BigDecimal ("1.8256");
BigDecimal d = new BigDecimal ("1.8226");
c = c.negate();
d = d.negate();
System.out.println("c="+c.setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("d="+d.setScale(2, BigDecimal.ROUND_HALF_UP));}输出:c=-1.83
d=-1.82
解决方案 »
- java面试题。求讨论,
- JFreeChart画图的问题。。。。。。。。。。。。。。。。。。。
- 提交页面不能跳转
- 只要是IE打过SP2,如果是弹出窗口的话,标题栏总是会出现网址,如何把它去掉!其它的IE则不会
- 一个dao中,要有两个数据源(dataSource),我该如何控制事务。我用的是spring框架。
- 在程序里面怎样得到select count(*) from aaa 的执行结果?请看
- 在Oracle中,blob和clob以及long raw之间有什么区别,我现在想把html文件存在oracle中,用哪一个字段比较好?
- (救命)为什么从sql server里读出来的中文数据都变成了"?"
- Apache+tomcat的问题!
- 连接池问题(有代码),请帮忙!
- jsp下载文件的问题
- 带井号的文件无法下载怎么办
System.out.println(getRundDouble("-3.523"));
System.out.println(getRundDouble("3.523"));
System.out.println(getRundDouble("3.235"));
System.out.println(getRundDouble("-3.235"));
}
public static double getRundDouble(String value){
BigDecimal c = new BigDecimal (value);
if(c.doubleValue()>0){
return c.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
}else{
String str=String.valueOf(value);
String[] array=str.split("\\.");
if(array.length==1){
return c.setScale(2).doubleValue();
}else{
if(array[1].length()<=2){
return c.setScale(2).doubleValue();
}else{
char[] chars=array[1].toCharArray();
int[] ints=new int[chars.length];
for(int i=0;i<chars.length;i++){
ints[i]=Integer.valueOf(String.valueOf(chars[i]));
}
if(ints[2]>=5){
return Double.valueOf(array[0]+"."+ints[0]+(ints[1]-1));
}else{
return Double.valueOf(array[0]+"."+ints[0]+(ints[1]+1));
}
}
}
}
}
BigDecimal c = new BigDecimal(value);
if (c.doubleValue() > 0) {
return c.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
} else {
String[] array = value.split("\\.");
if (array.length == 1) {
return c.setScale(2).doubleValue();
} else {
if (array[1].length() <= 2) {
return c.setScale(2).doubleValue();
} else {
String[] strs = array[1].split("(?<!^)(?=\\d)");
if (Integer.valueOf(strs[2]) >= 5) {
return Double.valueOf(array[0] + "." + strs[0]
+ (Integer.valueOf(strs[1]) - 1));
} else {
return Double.valueOf(array[0] + "." + strs[0]
+ (Integer.valueOf(strs[1]) + 1));
}
}
}
}
}