Java中对大数的操作

来源:互联网 发布:mysql数据库导入导出 编辑:程序博客网 时间:2024/06/05 03:49

1.整型大数类(BigInteger):


//构造:BigInteger(String val) 将 BigInteger的十进制字符串表示形式转换为 BigInteger//对象.toString(int radix) 返回此 BigInteger 的给定基数的字符串表示形式//对象.pow(int exponent) 返回其值为 (thisexponent) 的 BigInteger //除此还有max,min,mod,gcd最大公约数,add,subtract,mutiply,divide等import java.math.BigInteger;//BigInteger类public class BigIntegerDemo {public static void main(String[] args) {BigInteger bi1 = new BigInteger("987654321");//构造方法,将字符串转换为BigInteger类BigInteger bi2 = new BigInteger("123456789");System.out.println("加法:" + bi1.add(bi2));//调用add()方法System.out.println("减法:" + bi1.subtract(bi2));System.out.println("乘法:" + bi1.multiply(bi2));System.out.println("除法:" + bi1.divide(bi2));System.out.println("取余:" + bi1.mod(bi2));//public BigInteger[] divideAndRemainder(BigInteger val)返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组BigInteger div[] =  bi1.divideAndRemainder(bi2);System.out.println("商余除法:商:" + div[0] + ",余:" + div[1]);System.out.println("bi1的5次方为:" + bi1.pow(5));}}

1.浮点型大数类(BigDecimal):


//构造://BigDecimal(BigInteger val) 将 BigInteger 转换为 BigDecimal。//BigDecimal(String val) 将 BigDecimal 的字符串表示形式转换为 BigDecimal,还可以int double long//方法://对象.toString()返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法//对象.toPlainString() 返回不带指数字段的此 BigDecimal 的字符串表示形式。//对象.stripTrailingZeros() 返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal。//对象.BigDecimal add(BigDecimal augend) 返回一个 BigDecimal,其值为 (this + augend),其标度(精度)为 max(this.scale(), augend.scale())。 import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {BigDecimal bi1 = new BigDecimal(2345.6789);//将double类型转换为BigDecimal类型BigDecimal bi2 = new BigDecimal(98765.4321);System.out.println("BigDecimal类型转换为double类型:" + bi1.doubleValue());//将BigDecimal类型转换为double类型System.out.println("加法:" + bi1.add(bi2).doubleValue());//add()方法返回值类型是BigDecimal类型需要转换为doubleSystem.out.println("减法:" + bi1.subtract(bi2).doubleValue());System.out.println("乘法:" + bi1.multiply(bi2).doubleValue());//divide(对象,保留的位数,四舍五入的常量)  除法方法的应用System.out.println("BigDecimal.ROUND_HALF_UP=" + BigDecimal.ROUND_HALF_UP);System.out.println("除法:" + bi2.divide(bi1,BigDecimal.ROUND_HALF_UP).doubleValue());//未四舍五入System.out.println("除法:" + bi2.divide(bi1,3,BigDecimal.ROUND_HALF_UP).doubleValue());//保留三位小数BigDecimal bi3 = new BigDecimal("12345.6789");//将String类型转换为BigDecimal类型BigDecimal bi4 = new BigDecimal("98765.4321111");System.out.println("加法:" + bi3.add(bi4).doubleValue());//add()方法返回值类型是BigDecimal类型需要转换为doubleSystem.out.println("除法:" + bi4.divide(bi3,BigDecimal.ROUND_HALF_UP).toEngineeringString());System.out.println("BigDecimal类型转换为EngineeringString类型:" + bi3.toEngineeringString());}}


更多构造及方法请点此处查找:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh


0 0
原创粉丝点击