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);
}
}
小结