大数处理:
当我们要操作的数已经超过了int的范围,我可以用BigInteger和Bigimal来操作:
1、 实例化BigInteger big = new BigInteger(String num);
package com.jtlyuan; import java.math.BigInteger; public class BigNumber { public static void main(String[] args) { String num1 ="12345678987654321"; String num2 ="9876543210123456789"; BigInteger big1 = new BigInteger(num1); BigInteger big2 = new BigInteger(num2); System.out.println("相加"+big1.add(big2)); System.out.println("想减"+big1.subtract(big2)); System.out.println("相除"+big1.multiply(big2)); System.out.println("相除"+big1.divide(big2)); BigInteger[] result = big1.divideAndRemainder(big2); System.out.println("整数"+result[0]); System.out.println("余数"+result[1]); } }/* 相加9888888889111111110 想减-9864197531135802468 相除121932631979881115785550983112635269 相除0 整数0 余数12345678987654321*/ |
2、 BigDecimal类
此类主要功能是进行小数的大数的计算,而且最重要的可以精确到自己指定的位数。
通过BigDecimal bd = new BigDecimal(string num);实例化
通过divide(new BigDecimal(1),int scale,ROUND_HEAD_UP)来取得一个小数点后四舍五入的位数。
package com.jtlyuan; import java.math.BigDecimal; public class BigDecimalNumber { public static void main(String[] args) { String num1 = "142.54578444"; String num2 = "15432.58240805"; BigDecimal bd1 = new BigDecimal(num1); BigDecimal bd2 = new BigDecimal(num2); System.out.println("加法"+bd1.add(bd2)); System.out.println("精确到3位小数"+bd1.divide(new BigDecimal(1), 3, BigDecimal.ROUND_HALF_UP)); } } /*加法15575.12819249 精确到3位小数142.546 */ |