

String value="777777733333322222999991111111999999933333399999999333333399999955555999995555";
BigInteger number=new BigInteger(value);
import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {//下面的value已经超过了long的最大长度String value1="7777777777777777666666666666666644444444444444222222222222222";String value2="6666666666666666444444444444442222222222222221111111111000000";BigInteger number1=new BigInteger(value1);BigInteger number2=new BigInteger(value2);System.out.println(number1);System.out.println(number2);BigInteger result;result = number1.add(number2);System.out.println(result);}
}

import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {//下面的value已经超过了long的最大长度String value1="7777777777777777666666666666666644444444444444222222222222222";String value2="6666666666666666444444444444442222222222222221111111111000000";BigInteger number1=new BigInteger(value1);BigInteger number2=new BigInteger(value2);System.out.println(number1);System.out.println(number2);BigInteger result;//加法result = number1.add(number2);System.out.println(result);//减法result=number1.subtract(number2);System.out.println(result);//乘法result=number1.multiply(number2);System.out.println(result);//除法result=number1.divide(number2);BigInteger[] bigIntegers = number1.divideAndRemainder(number2);System.out.println(result);//除法并求余数//result2[0]是除法的结果 result2[1]是余数的结果BigInteger[] result2 = number1.divideAndRemainder(number2);System.out.println(result2);System.out.println("===============");System.out.println(result2[0]);System.out.println(result2[1]);}
}

== 注意:在进行装换之前,应该明确是否会丢失精度,避免转换结果不符合预期==

import java.math.BigDecimal;
import java.math.BigInteger;public class BigDecimalDemo {public static void main(String[] args) {//创建2个基本类型的浮点数double d1=0.1;double d2=0.2;//使用2个double求和的结果System.out.println(d1+d2);//0.30000000000000004//创建2个BigDecimal对象String s1="0.1";String s2="0.2";BigDecimal number1=new BigDecimal(s1);BigDecimal number2=new BigDecimal(s2);BigDecimal add = number1.add(number2);System.out.println(add);}
}

import java.math.BigDecimal;
import java.math.BigInteger;public class BigDecimalDemo {public static void main(String[] args) {//创建2个基本类型的浮点数double d1=0.1;double d2=0.2;//使用2个double求和的结果System.out.println(d1+d2);//0.30000000000000004//用它的静态方法valueOf()方法创建BigDecimal对象BigDecimal number3=BigDecimal.valueOf(d1);BigDecimal number4=BigDecimal.valueOf(d2);BigDecimal add1 = number3.add(number4);System.out.println(add1);}
}
我们看见BigDecimal还有如下的构造方法

import java.math.BigDecimal;
import java.math.BigInteger;public class BigDecimalDemo {public static void main(String[] args) {//创建2个基本类型的浮点数double d1=0.1;double d2=0.2;//使用2个double求和的结果System.out.println(d1+d2);//0.30000000000000004//创建2个BigDecimal对象String s1="0.1";String s2="0.2";BigDecimal number1=new BigDecimal(s1);BigDecimal number2=new BigDecimal(s2);BigDecimal add = number1.add(number2);System.out.println(add);//当原数使用double表示时,不要使用double作为构造方法的参数来创建BigDecimal对象.BigDecimal number5=new BigDecimal(d1);BigDecimal number6=new BigDecimal(d2);BigDecimal add2 = number5.add(number6);System.out.println(add2);//结果是不对的/*** 小结:当原数使用String表示时,使用构造方法创建BigDecimal对象* 当原数使用double表示时,使用静态valueOf()方法创建BigDecimal* 当原数使用double表示时,不要使用double作为构造方法的参数来创建BigDecimal对象.*/}
}
小结



import java.math.BigDecimal;
import java.math.BigInteger;public class BigDecimalDemo {public static void main(String[] args) {//创建2个基本类型的浮点数double d1=0.13;double d2=0.234;//使用2个double求和的结果System.out.println(d1+d2);//0.30000000000000004//创建2个BigDecimal对象String s1="0.1";String s2="0.025";BigDecimal number1=new BigDecimal(s1);BigDecimal number2=new BigDecimal(s2);BigDecimal add = number1.add(number2);System.out.println(add)BigDecimal divide = number1.divide(number2);System.out.println(divide);BigDecimal divide1 = number1.divide(number2, BigDecimal.ROUND_UP);System.out.println(divide1);}
}



import java.math.BigDecimal;
import java.text.NumberFormat;public class NumberFormatDemo {public static void main(String[] args) {//将被格式化的数double value=95.32;BigDecimal number=BigDecimal.valueOf(value);//获取NumberFormat工具对象NumberFormat percentInstance = NumberFormat.getPercentInstance();NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();//执行格式化String format = percentInstance.format(number);String format1 = percentInstance.format(value);System.out.println(format);System.out.println(format1);String format2 = currencyInstance.format(number);String format3 = currencyInstance.format(value);System.out.println(format2);System.out.println(format3);/*** 9,532%* 9,532%* ¥95.32* ¥95.32*/}
}

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.Locale;public class NumberFormatDemo {public static void main(String[] args) {//将被格式化的数double value=95.32;BigDecimal number=BigDecimal.valueOf(value);//获取NumberFormat工具对象.Locale.法国的,记住后面.的不一定是国家,它是地区.比如中国香港,和中国大陆是不一样的.NumberFormat currencyInstance = NumberFormat.getCurrencyInstance(Locale.FRANCE);String format2 = currencyInstance.format(number);String format3 = currencyInstance.format(value);System.out.println(format2);System.out.println(format3);}
}
小结
上一篇:起初二字可称强,猜一生肖