java之大数的处理
2017-02-24 18:21
267 查看
Java的提供了操作大数的类,即java.math.BigInter与java.math.BigDecimal类。Big.math.BigInter是针对大整数的处理类,而BigDecimal针对大
小数的处理
BigInteger类常用的几种运算方法:
public BigInteger (String val) :构造BigInteger
public BigInteger add(BigInteger val):加法
public BigInteger subtract(BigInteger val):减法
public BigInteger multiply(BigInteger val): 乘法
public BigInteger divide(BigInteger val): 除法
public BigInteger remainder(BigInter val): 取余
public BigInteger[] divideAndRemainder(BigInteger val): 用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。
public BigInteger pow(int exponent): 进行取参数的exponent次方操作
public BigInteger negate(): 取相反数。
public BigInteger shiftLeft(int n): 将数字左移n位,如果n为负数,做右移操作
public BigInteger shiftRight(int n): 和上面的相反
public BigInteger and(BigInteger val): 与操作
public BigInteger or(BigInteger val): 或操作
public BigInteger compareTo(BigInteger val): 数字比较
public BigInteger boolean equals(Object x):当参数x是BigInteger类型的数字并且数值相等时,返回true。
public BigInteger max(BigInteger val): 返回较大的值
public BigInteger min(BigInteger val):返回较小的值
BigDecimal类的相关处理
构造方法
public BigDecimal(double augend)
public BigDecimal(String val)
加、减、乘、除
public BigDecimal add(BigDecimal augend) : 加法
public BigDecimal subtract(BigDecimal augend) : 减法
public BigDecimal multiply(BigjDecimal augend) : 乘法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) :除法,3个参数分别为除数、商的小数点后的位数、近似处理模式。
divide()方法的多种处理模式
BigDecimal.ROUND_UP 商的最后一位如果大于0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字都省略
BigDecimal.ROUND_CEILING 商如果是正数,按照ROUND_UP模式处理:如果是负数,按照ROUND_DOWN模式处理。这种模式的处理都会使近似值大于等于实际值
BigDecimal.ROUND_FLOOR 与ROUND_CEILING模式相反
BigDecimal.ROUND_HALF_DOWN 对商进行四舍五入操作,如果商最后一位小于等于5,做舍弃操作:如果最后一位大于5,则做进位操作,如7.5=7
BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作,
如果商最后一位小于5,做舍弃操作:如果最后一位大于等于5,则做进位操作,如7.5=8
BigDecimal,ROUND_HALF_EVEN 如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理:如果为偶数,则按照ROUND_HALF_DOWN处理,如7.5=8,8.5=8。
最后,附上一个小例子,哈哈
import java.math.BigInteger;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a=cin.nextBigInteger();
BigInteger b=cin.nextBigInteger();
BigInteger c=a.add(b);
System.out.println(c);
}
}
public class main {
public static void main(String[] args) {
String a="abx";
String b=a.substring(1);
System.out.println(b);
}
}
//输出 bx
对于 BigDecimal b ; (b=(0.4321)^ 20)
String s = b.toPlainString() ;
System.out.println(s) ;
输出为:
0.00000005148554641076956121994511276767154838481760200726351203835429763013462401
若String s = b.toString() ;
输出为:
5.148554641076956121994511276767154838481760200726351203835429763013462401E-8
import
java.math.BigDecimal;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNextBigDecimal()){
BigDecimal a=cin.nextBigDecimal();
BigDecimal b=a.stripTrailingZeros();
System.out.println(b);
}
}
}
//输入1.20000,输出1.2
小数的处理
BigInteger类常用的几种运算方法:
public BigInteger (String val) :构造BigInteger
public BigInteger add(BigInteger val):加法
public BigInteger subtract(BigInteger val):减法
public BigInteger multiply(BigInteger val): 乘法
public BigInteger divide(BigInteger val): 除法
public BigInteger remainder(BigInter val): 取余
public BigInteger[] divideAndRemainder(BigInteger val): 用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。
public BigInteger pow(int exponent): 进行取参数的exponent次方操作
public BigInteger negate(): 取相反数。
public BigInteger shiftLeft(int n): 将数字左移n位,如果n为负数,做右移操作
public BigInteger shiftRight(int n): 和上面的相反
public BigInteger and(BigInteger val): 与操作
public BigInteger or(BigInteger val): 或操作
public BigInteger compareTo(BigInteger val): 数字比较
public BigInteger boolean equals(Object x):当参数x是BigInteger类型的数字并且数值相等时,返回true。
public BigInteger max(BigInteger val): 返回较大的值
public BigInteger min(BigInteger val):返回较小的值
BigDecimal类的相关处理
构造方法
public BigDecimal(double augend)
public BigDecimal(String val)
加、减、乘、除
public BigDecimal add(BigDecimal augend) : 加法
public BigDecimal subtract(BigDecimal augend) : 减法
public BigDecimal multiply(BigjDecimal augend) : 乘法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) :除法,3个参数分别为除数、商的小数点后的位数、近似处理模式。
divide()方法的多种处理模式
BigDecimal.ROUND_UP 商的最后一位如果大于0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字都省略
BigDecimal.ROUND_CEILING 商如果是正数,按照ROUND_UP模式处理:如果是负数,按照ROUND_DOWN模式处理。这种模式的处理都会使近似值大于等于实际值
BigDecimal.ROUND_FLOOR 与ROUND_CEILING模式相反
BigDecimal.ROUND_HALF_DOWN 对商进行四舍五入操作,如果商最后一位小于等于5,做舍弃操作:如果最后一位大于5,则做进位操作,如7.5=7
BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作,
如果商最后一位小于5,做舍弃操作:如果最后一位大于等于5,则做进位操作,如7.5=8
BigDecimal,ROUND_HALF_EVEN 如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理:如果为偶数,则按照ROUND_HALF_DOWN处理,如7.5=8,8.5=8。
最后,附上一个小例子,哈哈
import java.math.BigInteger;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a=cin.nextBigInteger();
BigInteger b=cin.nextBigInteger();
BigInteger c=a.add(b);
System.out.println(c);
}
}
public class main {
public static void main(String[] args) {
String a="abx";
String b=a.substring(1);
System.out.println(b);
}
}
//输出 bx
对于 BigDecimal b ; (b=(0.4321)^ 20)
String s = b.toPlainString() ;
System.out.println(s) ;
输出为:
0.00000005148554641076956121994511276767154838481760200726351203835429763013462401
若String s = b.toString() ;
输出为:
5.148554641076956121994511276767154838481760200726351203835429763013462401E-8
import
java.math.BigDecimal;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNextBigDecimal()){
BigDecimal a=cin.nextBigDecimal();
BigDecimal b=a.stripTrailingZeros();
System.out.println(b);
}
}
}
//输入1.20000,输出1.2
相关文章推荐
- java大数处理——转载
- JAVA大数的处理
- poj 1220 java大数处理进制转换
- JAVA大数处理(BigInteger,BigDecimal)
- Java常用类库--大数处理类--BigInteger
- Integer Inquiry hdu1047 java 处理大数
- 黑马程序员——java中对大数的处理
- 初学java之大数处理
- JAVA之大数处理
- 关于java对于大数处理的相关程序和用法
- JAVA处理大数入门 转载
- JAVA的大数处理
- JAVA大数处理
- java处理大数的相关知识
- HDU 1063Exponentiation(Java的大数处理)
- java 处理大数
- Java中处理大数
- JAVA的大数处理
- Java大数处理
- 关于java对于大数处理的相关程序和用法