ROUND_DOWN

直接舍去后面的小数

例如:new BigDecimal("1.12087").setScale(3,BigDecimal.ROUND_DOWN); -> 1.120

ROUND_UP

直接舍去后面的小数位,同时保留小数位的最后一位+1)

例:new BigDecimal("1.12087").setScale(3,BigDecimal.ROUND_UP); -> 1.121

ROUND_HALF_UP

常说的四舍五入,当舍弃部分大于等于 >=0.5 时进一位,否则舍弃

ROUND_HALF_DOWN

四舍五入,与ROUND_HALF_DOWN的唯一区别是 >0.5 (注意不包含等于) 例:

new BigDecimal(" 0.1250 ").setScale(2,BigDecimal.ROUND_HALF_DOWN);  -> 0.12

new BigDecimal(" 0.1251 ").setScale(2,BigDecimal.ROUND_HALF_DOWN);  -> 0.13

ROUDN_HALF_EVEN

如果舍弃部分的左边是奇数,按照ROUND_HALF_UP策略;如果舍弃部分的左边是偶数,按照ROUND_HALF_DOWN策略。(较少使用,不举例了)

ROUND_UNNECESSARY

当小数的真实位数与指定的位数不相同时将抛出异常,既要求精确计算,不能做取舍。(几乎使用不到)

ROUND_CEILING

当是正数时,采用ROUND_UP策略;当是负数时,采用ROUND_DOWN策略

ROUND_FLOOR

与ROUND_CEILING相反,当是正数时采用ROUND_DOWN;当是负数时采用ROUND_UP策略。

-1.30的浮点表示不准确.以下是对代码的略微修改: BigDecimal bd = new BigDecimal ("-1.30"). set Scale (2, Rounding Mode . HALF _UP);String textBD = bd.toPlainString();System.out.println("text version, length = , " + textBD.length())... 一. java 取整 数的方式1.直接使用强制转换public static void roundOne(){System.out.println("正数:(int)10.12 = " + (int)10.12);System.out.println("负数:(int)-10.12 = " + (int)-10.12);System.out.println("---------------------... System.out.println("count:"+count); String bd1 = bd. set Scale ( 0, BigDecimal .ROUND_ HALF _UP ).toString(); Java -- BigDecimal 类型——引用类型 汇总 对 BigDecimal 类型的调用,转换,运算等用法。 其和BigInteger类似, BigDecimal 可以表示一个任意大小且精度完全准确的浮点数。 //创建 BigDecimal 对象 BigDecimal a = new BigDecimal (101.00); BigDecimal b = new BigDecimal (111.00); //比较大小 if(a.compareTo(b) == -1)//a小于b if(a.compareTo 那为什么会出现这种情况呢? 因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。 根本原因是:十进制值通常没有完全相同的二进制表示形式,十进制数的二进制表示形式可能不精确。只能无限接近于那个值 但是,在项目 ,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算都必须十分精确,你想想,如果你的支付宝账户余额显示193.99999999999998 BigDecimal bd = new BigDecimal ("12.1"); long l = bd. set Scale ( 0, BigDecimal .ROUND_UP ).longValue(); // 向上 取整 long l = bd. set Scale ( 0, BigDecimal .ROUND_DOWN ).longValue()... 这两个类位于 java .math包内,要使用它们必须在类前面引用该包:import java .math.BigInteger;和import java .math. BigDecimal ; BigInteger和 BigDecimal 分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数)。主要用于高精度计算 。这两个类使得 java 的大数,高精度运算变得很简单。 下面从几个方面对 方法一:{    double   c=3.154215; java .text.DecimalFormat myformat= new java .text.DecimalFormat("0.00");    String str = myformat.format(c);    方式二:{ java .text.DecimalFormat   df