BigInteger和BigDecimal

                       BigInteger和BigDecimal

数据类型:
数据类型 类型名 位长 取值范围默认值

布尔型    boolean 1 true,false false
字节型    byte 8 -128-127 0
字符型    char 16 ‘\u000’-\uffff      ‘\u0000’
短整型    short 16 -32768-32767 0
整型       int 32-2147483648,2147483647 0
长整型    long 64-9.22E18,9.22E180
浮点型    float 32 1.4E-45-3.4028E+38  0.0
双精度型 double 644.9E-324,1.7977E+308 0.0

在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。 这两个类都在java.math.*包中,因此每次必须在开头处引用该包。
Ⅰ基本函数: 
1.valueOf(parament); 将参数转换为制定的类型 
比如 int a=3; 
BigInteger b=BigInteger.valueOf(a); 
则b=3; 
String s=”12345”; 
BigInteger c=BigInteger.valueOf(s); 
则c=12345;


2.add(); 大整数相加 
3.subtract(); 相减 
4.multiply(); 相乘 
5.divide(); 相除取整 
6.remainder(); 取余 
7.pow(); a.pow(b)=a^b 
8.gcd(); 最大公约数 
9.abs(); 绝对值 
10.negate(); 取反数 
11.mod(); 
a.mod(b)=a%b=a.remainder(b); 
12.max(); min(); 
13.punlic int comareTo(); 
14.boolean
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
	static final int location = 10;//小数点后位数
	 //加法 返回 num1+num2  
    public double add(double num1, double num2){  
        BigDecimal b1 = new BigDecimal(num1);  
        BigDecimal b2 = new BigDecimal(num2);  
       
       return b1.add(b2).doubleValue(); 
    }  
    //减法 返回 num1-num2  
    public double sub(double num1, double num2){  
        BigDecimal b1 = new BigDecimal(num1);  
        BigDecimal b2 = new BigDecimal(num2);  
        return b1.subtract(b2).doubleValue();  
    }  
    //乘法 返回 num1*num2  
    public double mul(double num1, double num2){  
        BigDecimal b1 = new BigDecimal(num1);  
        BigDecimal b2 = new BigDecimal(num2);
        System.out.println("###" + b1.add(b2));
        return b1.multiply(b2).doubleValue();  
    }  
    //除法 返回 num1/num2  
    public double div(double num1, double num2){  
        return div(num1,num2,location);  
    }  
    //除法 返回num1/num2 自定义小数点后位数  
    public double div(double num1, double num2, int _location){  
        BigDecimal b1 = new BigDecimal(num1);  
        BigDecimal b2 = new BigDecimal(num2);  
        return b1.divide(b2,_location,BigDecimal.ROUND_HALF_UP).doubleValue();  
    }  
public static void main(String[] args) {
	Main m = new Main();
		System.out.println(m.add(1232.2,123.333));
		System.out.println(m.sub(222222.4, 74673246723647.5));
		System.out.println(m.mul(2347.34, 34324324.324234));
		System.out.println(m.div(100, 200));
		System.out.println(m.div(100, 201, 10));
		System.out.println();
		
		System.out.println("####");
		BigInteger b1 = new BigInteger("10000");
		System.out.println(b1.remainder(new BigInteger("11")));
        System.out.println(b1.pow(2));
        System.out.println(b1.gcd(new BigInteger("12")));
        System.out.println(b1.negate());
        System.out.println(b1.compareTo(b1));
        System.out.println(b1.equals(b1));
       
	}
}

equals(); 是否相等 

15.BigInteger构造函数: 
一般用到以下两种: 
BigInteger(String val);      将指定字符串转换为十进制表示形式; 
BigInteger(String val,int radix);     将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger 
Ⅱ.基本常量: 
A=BigInteger.ONE 1 
B=BigInteger.TEN 10 
C=BigInteger.ZERO 0 
16.
初始化 BigDecimal a=  new  BigDecimal( "1.35" );
对数值取值:
1 .a.setScale( 1 ,BigDecimal.ROUND_DOWN);// 取一位小数,直接删除后面多余位数,故取值 1.3 .
2 .a.setScale( 1 ,BigDecimal.ROUND_UP);// 取一位小数,删除后面位数,进一位,故取值 1.4 .
3 .a.setScale( 1 ,BigDecimal.ROUND_HALF_UP);// 取一位小数,四舍五入,故取值 1.4 .
4 .a.setScale( 1 ,BigDecimal.ROUND_HALF_DOWN);// 取一位小数,五舍六入,故取值 1.3 .
17.compare的详解如下:
compareTo
public int compareTo(BigInteger val)将此 BigInteger 与指定的 BigInteger 进行比较。
对于针对六个布尔比较运算符 (<, ==, >, >=, !=, <=) 中的每一个运算符的各个方法,优先提供此方法。
执行这些比较的建议语句是:(x.compareTo(y) <op> 0),其中 <op> 是六个比较运算符之一。
指定者:
接口 Comparable<BigInteger> 中的 compareTo
参数:
val - 将此 BigInteger 与之比较的 BigInteger。
if( a.compareTo(b) == 0 ) System.out.println("a == b"); //大整数a==b
else if( a.compareTo(b) > 0 ) System.out.println("a > b"); //大整数a>b
else if( a.compareTo(b) < 0 ) System.out.println("a < b"); //大整数a<b

 
 读入: 
用Scanner类定义对象进行控制台读入,Scanner类在java.util.*包中
Scanner cin=new Scanner(System.in);// 读入
    while(cin.hasNext()){ // 等同于!=EOF
        int n;
        BigInteger m;
        n = cin.nextInt(); // 读入一个int;
        m = cin.nextBigInteger();// 读入一个BigInteger;
        System.out.print(m.toString());
    }
 
//返回大整数十进制的字符串表示
System.out.println(a.toString());
//返回大整数p进制的字符串表示
int p=8;
System.out.println(a.toString(p));

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值