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