志达IT
做快乐程序员

bigdecimal比较大小(bigdecimal和double区别)

bigdecimal比较大小

BigDecimal比较大小使用compareTo(BigDecimal)办法:
intflag=bigdemical.compareTo(bigdemical1)。
flag=-1,表明bigdemical小于bigdemical1。
flag=0,表明bigdemical等于bigdemical1。
flag=1,表明bigdemical大于bigdemical1。
实际中直接跟0比较就可以了,别跟-1或者1比较。double
构造办法
BigDecimal一共有4个构造办法:
BigDecimal(int)创立一个具有参数所指定整数值的目标。
BigDecimal(double)创立一个具有参数所指定双精度值的目标。(不主张选用)
BigDecimal(long)创立一个具有参数所指定长整数值的目标。
BigDecimal(String)创立一个具有参数所指定以字符串表明的数值的目标。

bigdecimal和double区别

http://blog.csdn.net/shadow_zed/article/details/73522157<br><br>/*
*使用BigDecimal需要注意的事项:
*1、两个BigDecimal值不能使用“+,-,*,/”进行加减乘除,要使用“add,substract,multiply,divide”;
*2、两个BigDecimal值比较使用compareTo方法,比较结果有-1,0,1,分别表示小于,等于,大于;对于0,可以使用BigDecimal.ZERO表示;
*3、提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入;
*4、因double有效位数为16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差,解决方法就是使用BigDecimal,它的有
效长度足够长可存储小数位数因此可代替double来进行加减乘除,金额必须是完全精确的计算,故不能使用double或者float,而
应该采用java.math.BigDecimal.double
*5、mysql数据库设计
BigDecimal在进行入库时,数据库选择decimal类型,长度可以自定义,如18;小数点我们项目中用的是2,保留2位小数.此外还要注意的就是默认值,
一定写成0.00,不要用默认的NULL,否则在进行加减排序等操作时,会带来转换的麻烦!
如:`balance`decimal(18,2)DEFAULT’0.00’COMMENT’账户余额’,
*/
packagebigDecimalTest;
importjava.math.BigDecimal;
/**
*1、两个BigDecimal值不能使用“+,-,*,/”进行加减乘除,要使用“add,substract,multiply,divide”
*2、两个BigDecimal值比较使用compareTo方法,比较结果有-1,0,1,分别表示小于,等于,大于;对于0,可以使用BigDecimal.ZERO表示
*
*
*/
publicclassArith{
privatestaticfinalintDEF_DIV_SCALE=10;//这个类不能实例化
privateArith(){
}
/**
*提供精确的加法运算。
*
*@paramv1
*被加数
*@paramv2
*加数
*@return两个参数的和
*/
publicstaticdoubleadd(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.add(b2).doubleValue();
}
/**
*提供精确的减法运算。
*
*@paramv1
*被减数
*@paramv2
*减数
*@return两个参数的差
*/
publicstaticdoublesub(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.subtract(b2).doubleValue();
}
/**
*使用double来进行测试
*@paramv1
*@paramv2
*@return
*/
publicstaticdoublesub01(doublev1,doublev2){
returnv1-v2;
}
/**
*提供精确的乘法运算。
*
*@paramv1
*被乘数
*@paramv2
*乘数
*@return两个参数的积
*/
publicstaticdoublemul(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.multiply(b2).doubleValue();
}
/**
*提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点以后10位,以后的数字四舍五入。
*
*@paramv1
*被除数
*@paramv2
*除数
*@return两个参数的商
*/
publicstaticdoublediv(doublev1,doublev2){
returndiv(v1,v2,DEF_DIV_SCALE);
}
/**
*提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。
*
*@paramv1
*被除数
*@paramv2
*除数
*@paramscale
*表示表示需要精确到小数点以后几位。
*@return两个参数的商
*/
publicstaticdoublediv(doublev1,doublev2,intscale){
if(scale<0){
thrownewIllegalArgumentException(
“Thescalemustbeapositiveintegerorzero”);
}
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
*提供精确的小数位四舍五入处理。
*
*@paramv
*需要四舍五入的数字
*@paramscale
*小数点后保留几位
*@return四舍五入后的结果
*/
publicstaticdoubleround(doublev,intscale){
if(scale<0){
thrownewIllegalArgumentException(
“Thescalemustbeapositiveintegerorzero”);
}
BigDecimalb=newBigDecimal(Double.toString(v));
BigDecimalone=newBigDecimal(“1”);
returnb.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
*因double有效位数为16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差,解决方法就是使用BigDecimal,它的有
*效长度足够长可存储小数位数因此可代替double来进行加减乘除,金额必须是完全精确的计算,故不能使用double或者float,而
*应该采用java.math.BigDecimal.
*@paramargs
*/
publicstaticvoidmain(String[]args){
//两个BigDecimal值比较使用compareTo方法,比较结果有-1,0,1,分别表示小于,等于,大于;
//对于0,可以使用BigDecimal.ZERO表示;如:bd.compareTo(BigDecimal.ZERO)
BigDecimalbd=newBigDecimal(3);
BigDecimalbd01=newBigDecimal(3);
if(bd.compareTo(bd01)>0){
System.out.println(“bd>bd01”);
}elseif(bd.compareTo(bd01)<0){
System.out.println(“bd<bd01”);
}else{
System.out.println(“bd=bd01″);
}
//减法测试
doubles1=sub(0.03,0.02);
doubles2=sub01(0.03,0.02);
System.out.println(s1+”—“+s2);
//0.01—0.009999999999999998
//除法测试
System.out.println(div(0.03,0.022));
}
}

赞(0)
未经允许不得转载:志达IT网站 » bigdecimal比较大小(bigdecimal和double区别)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

志达IT网站 每天分享编程和互联网的IT技术博客

登录/注册联系我们