[Java]关于Java中的数值计算的简单总结

来源:互联网 发布:软件项目估算表 编辑:程序博客网 时间:2024/05/20 17:58
//假如转载,请注明出处.谢谢!
/*java中数值数据的范围从计算机原理的角度来解释:byte占8个字节的, 且是有符号整形,用二进制表示时候最高位为符号位0代表正数 1代表负数。正数在计算机中是以原码形式存在的;负数在计算机中是以其补码形式存在的,就是负数的绝对值的原码转为二进制再按位取反后加1。最大值:0 111 1111 = 127;即 +2^7-1(表示了128个数,最小的是0,最大的是127)最小值:1 111 1111 = -128 即 -2^7  (表示了128个数,最大的是-1,最小的-128)整数类型:byte、short、int、longbyte (字节类型)  8位 1字节[-2^7,2^7-1]  即[-128,127],默认是0short(短整型)16位 2字节[-2^15,2^15-1]即[-32768,32767],默认是0int (整型)32位 4字节[-2^31,2^31-1]即[-2147483648~2147483647],默认是0.最大值21.47亿,完全能满足日常的使用要求long(长整型)    64位,8字节[-2^63,2^63-1]即[-9223372036854774808,9223372036854774807],默认是0L或0l(推荐用大写);可以看到byte和short比较小,而long的取值范围太大,占用的空间多,所以int就可以满足日常计算。通常,JAVA中出现了一个整数如35,就是int型的,如希望它是byte型的,可在数据后加上大写的 B:35B,表示它是byte型的,35S表示short型,35L表示long型的,表示int我们可以什么都不用加。以下是常数:Byte.MAX_VALUE: 127Byte.MIX_VALUE:-128Short.MAX_VALUE: 32767Short.MIN_VALUE:-32768Integer.MAX_VALUE: 2147483647Integer.MIN_VALUE:-2147483648Long.MAX_VALUE: 9223372036854775807Long.MIN_VALUE:-9223372036854775808Double.MAX_VALUE: 1.7976931348623157E308Double.MIN_VALUE: 4.9E-324*///打印出各类型的最大值、最小值public class java2{public static void main(String args[]){System.out.println("Byte.MAX_VALUE:"+Byte.MAX_VALUE);System.out.println("Byte.MIX_VALUE:"+Byte.MIN_VALUE);System.out.println("Short.MAX_VALUE:"+Short.MAX_VALUE);System.out.println("Short.MIN_VALUE:"+Short.MIN_VALUE);System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE);System.out.println("Integer.MIN_VALUE:"+Integer.MIN_VALUE);System.out.println("Long.MAX_VALUE:"+Long.MAX_VALUE);System.out.println("Long.MIN_VALUE:"+Long.MIN_VALUE);System.out.println("Double.MAX_VALUE:"+Double.MAX_VALUE);System.out.println("Double.MIN_VALUE:"+Double.MIN_VALUE);}};/*数值数据的溢出问题当程序中没有做数据范围检查时,数据大小超出了可正常表示的范围时,这个数据的输出将发生紊乱,出现非预期结果。(数据溢出)比如整型的最大值,假如再加1,则成为了最小值。解决的办法是改变数据类型,扩大数据的存储空间。*/public class DataDemo03{public static void main(String args[]){int max = Integer.MAX_VALUE ;// 求出最大值System.out.println("整型的最大值:" + max) ;//  2147483647System.out.println("整型的最大值 + 1:" + (max + 1)) ;// -2147483648System.out.println("整型的最大值 + 2:" + (max + 2)) ;// -2147483647System.out.println("整型的最大值 + 2:" + ((long)max + 2)) ;//  2147483649}};/*一些数学运算方法:Math类在java.lang包中,不需要导入,但随机数Random类要导入:import java.util.Random;*/import java.util.Random;class java2{public static void main(String args[]){System.out.println("9的平方根" + Math.sqrt(9));System.out.println("9的5次方" + Math.pow(9,5));System.out.println("13,19谁大" + Math.max(13,19));System.out.println("13,19谁小" + Math.min(13,19));//四舍五入,只保留整数,假如要保留几位小数的,则使用另外的方法:System.out.println("33.5468四舍五入" + Math.round(33.5468));    //打出10个小于100的随机数Random r = new Random();for(int i=1; i<=10; i++)System.out.print(r.nextInt(100) + "\t");}}/*数字的显示格式NumberFormat、MessageFormat、DateFormat都是Format的三个常用子类NumberFormat只是根据系统设置区域的不同固定地去显示数字的格式,DecimalFormat可以根据自己的喜好来任意显示格式。*/import java.text.* ;class FormatDemo{public void format1(String pattern,double value){// 此方法专门用于完成数字的格式化显示DecimalFormat df = null ;// 声明一个DecimalFormat类的对象df = new DecimalFormat(pattern) ;// 实例化对象,传入模板String str = df.format(value) ;// 格式化数字System.out.println("使用" + pattern + "格式化数字" + value + ":" + str) ;}};public class java2{public static void main(String args[]){//NumberFormat只是根据系统设置区域的不同固定地去显示数字的格式,NumberFormat nf = null ;// 声明一个NumberFormat对象nf = NumberFormat.getInstance() ;// 得到默认的数字格式化显示System.out.println("格式化之后的数字:" + nf.format(10000000)) ;System.out.println("格式化之后的数字:" + nf.format(1000.345)) ;//DecimalFormat可以根据自己的喜好来任意显示格式。FormatDemo demo = new FormatDemo() ;// 格式化对象的类demo.format1("###,###.###",111222.34567) ;demo.format1("000,000.000",11222.34567) ;demo.format1("###,###.###¥",111222.34567) ;demo.format1("000,000.000¥",11222.34567) ;demo.format1("##.###%",0.345678) ;demo.format1("00.###%",0.0345678) ;demo.format1("###.###\u2030",0.345678) ;}};//大数整数的计算import java.math.BigInteger ;public class java2{public static void main(String args[]){BigInteger bi1 = new BigInteger("123456789") ;// 声明BigInteger对象BigInteger bi2 = new BigInteger("987654321") ;// 声明BigInteger对象System.out.println("加法操作:" + bi2.add(bi1)) ;// 加法操作System.out.println("减法操作:" + bi2.subtract(bi1)) ;// 减法操作System.out.println("乘法操作:" + bi2.multiply(bi1)) ;// 乘法操作System.out.println("除法操作:" + bi2.divide(bi1)) ;// 除法操作,保留了商的整数部分System.out.println("最大数:" + bi2.max(bi1)) ; // 求出最大数System.out.println("最小数:" + bi2.min(bi1)) ; // 求出最小数BigInteger result[] = bi2.divideAndRemainder(bi1) ;// 求出余数的除法操作System.out.println("商是:" + result[0] + ";余数是:" + result[1]) ;}};/*大数的小数操作及可以准确地进行四舍五入:BigDecimal求到商的小数部分*/import java.math.* ;class MyMath{public static double add(double d1,double d2){// 进行加法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.add(b2).doubleValue() ;}public static double sub(double d1,double d2){// 进行减法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.subtract(b2).doubleValue() ;}public static double mul(double d1,double d2){// 进行乘法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.multiply(b2).doubleValue() ;}public static double div(double d1,double d2,int len){// 进行乘法计算BigDecimal b1 = new BigDecimal(d1) ;BigDecimal b2 = new BigDecimal(d2) ;return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;}public static double round(double d,int len){// 进行四舍五入BigDecimal b1 = new BigDecimal(d) ;BigDecimal b2 = new BigDecimal(1) ;return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;}};public class BigDecimalDemo01{public static void main(String args[]){System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;}};

原创粉丝点击