首先介绍一下Integer(Long/Double/Float)以及BigDecimal之间的相互转换 以及 同类型的比较运算知识:
(一)Integer类型
1).定义
Integer a=new Integer(int value);
Integer a=new Integer(String value);
2).转换
i. 定义中就可以将int型和String型的转换为Integer型
ii. String类型转换为Integer型
Integer.valueOf("");
Integer.getInteger("");
iii. String、Integer类型转换为int型
Integer.parseInt("");
Integer a;
a.intValue();
iv. 上面定义的Integer a转换为float, double, long
a.floatValue();
a.doubleValue();
a.longValue();
v. Integer a转换为String(其它的类型转换为String都可通用以下方法)
toString();
String.valueOf(a);
3).比较(比较的数Integer a)
i. Int num=a.compareTo(Integer anotherInteger);
如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值(有符号的比较)。
ii.转换为int型再比较:
a.intValue()与b.intValue比较大小;
(二)BigDecimal
1).定义
BigDecimal a=new BigDecimal(String val)
BigDecimal a=new BigDecimal(double val);
2).转换
i.定义中就可以将String型和double 型的转换为BigDecimal型
ii.BigDecimal转换为 Int,float, double, long
a.floatValue();
a.doubleValue();
a.longValue();
a.intValue();
iii. BigDecimal a转换为String(其它的类型转换为String都通用以下方法)
toString();
String.valueOf(a);
3).比较(比较的数BigDecimal a)
Int num=a.compareTo(BigDecimal anotherBigDecimal);
当此BigDecimal在数字上小于、等于或大于 val 时,返回 -1、0 或 1。
BigDecimal取其中最大、最小值、绝对值、相反数:
a.max (b) //比较取最大值
a.min(b) //比较取最小值
a.abs()//取最绝对值
a.negate()//取相反数
4).计算
加: a.add(b);
减: a.subtract(b);
乘: a.multiply(b);
除: a.divide(b,2);//2为精度取值
(三)int 、long、double、 float的取绝对值和同类型间比较大小都可用以下Math方法:
Math.max(a,b);//比较取最大值
Math.min(a,b);//比较取最小值
Math.abs(a); //取最绝对值
java.text.DecimalFormat df=new java.text.DecimalFormat("#.##");
double d=3.14159;
System.out.println(df.format(d));
(二)java.math.BigDecimal BigDecimal bd = new BigDecimal("3.14159265");
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
(三) class Test1{
public static void main(String[] args){
double ret = convert(3.14159);
System.out.println(ret);
}
static double convert(double value){
long l1 = Math.round(value*100); //四舍五入
double ret = l1/100.0; //注意:使用 100.0 而不是 100
return ret;
}
}
(四) double d = 13.4324;
d=((int)(d*100))/100;
java的double的大数值时如何才能不显示成科学计数法
Double d = new Double("1234567890.12");
System.out.println("d:="+d);
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
nf.setGroupingUsed(false);
System.out.println("d:="+nf.format(d));
显示结果是:
d:=1.23456789012E9
d:=1234567890.12
java浮点数的位数的设定
(一)double d = 1.300;
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(3); //设置最大小数位
String s = formatter.format(d);
System.out.println(s);
输出:1.300
(二)java.text.DecimalFormat dF=new java.text.DecimalFormat("0.000");
System.out.println(dF.format(d));
输出:1.300