方式一:
BigDecimal.setScale用于格式化小数点
setScale(1)表示保留以为小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN) 四舍五入,2.35变成2.3,如果是5则向下舍
class Main{ public static void main(String agrs[]){ double d = 2.5; BigDecimal b = new BigDecimal(d); //直接删除多余的位数、 // double dd = b.setScale(1,BigDecimal.ROUND_DOWN).doubleValue(); //向上保留位数(跟c++中的ceil) // double dd = b.setScale(1,BigDecimal.ROUND_CEILING).doubleValue(); // double dd = b.setScale(1,BigDecimal.ROUND_UP).doubleValue(); //四舍五入,当保留整数位的时候,5向上舍入 // double dd = b.setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入,当保留整数位的时候,5向下舍入 // double dd = b.setScale(0,BigDecimal.ROUND_HALF_DOWN).doubleValue(); System.out.println(dd); }
方式二:
保留结果四舍五入
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的数字);
例:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
方式三:
保留结果四舍五入
用法跟C printf()一样。
double d = 3.1415926;
String result = String .format("%.2f");
%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型
原文:http://blog.csdn.net/zhongshijunacm/article/details/38453781