java对大数处理

1.输入

读一个整数:  int n = cin.nextInt();       相当于 scanf("%d", &n);  或 cin >> n; 

读一个字符串:String s = cin.next();       相当于 scanf("%s", s);   或 cin >> s;  

读一个浮点数:double t = cin.nextDouble(); 相当于 scanf("%lf", &t); 或 cin >> t;  

读一整行:    String s = cin.nextLine();   相当于 gets(s);          或 cin.getline(...); 

读一个大数:  BigInteger c = cin.nextBigInteger();

不过需要注意的是它们没有像scanf一样有判断是否输入到结尾的功能。

这时候需要用一个Scanner类的方法hasnext()来判断是否输入到文件结尾;

2.输出

public class Main {
	public static void main(String[] args)
	{
 
		// TODO Auto-generated method stub
		
		double d;
		
		d=9999.99999;
		
		System.out.format("%f",d);                //9999.999990     没有回车
		
		System.out.format("%10.10f",d).println(); //9999.9999900000 输出回车
		
		System.out.format("%.4f",d).println();    //10000.0000      输出回车
		
		System.out.format("%3.4f",d).println();   //10000.0000		输出回车
		
		System.out.println(d);                    //输出当前变量      输出回车
		
		System.out.println();           		  //                输出回车
		
		System.out.printf("%f",d);	   			  //9999.999990     没有回车
		
		System.out.print(d);					  //9999.99999      没有回车
		
	}
}

当然,输出的时候也有对小数位数处理的方法:

0代表当前位向后都是0就输出0占位,#代表若当前位向后都是0就不输出这些位上的数字。

import java.text.DecimalFormat;
public class Main {
	public static void main(String[] args)  {
		double num = 9.999;
		DecimalFormat p3 = new DecimalFormat("#.00#");
		DecimalFormat p4 = new DecimalFormat("#.000#");
		DecimalFormat p5 = new DecimalFormat("#.0000#");
		System.out.println(p3.format(num));//输出9.999
		System.out.println(p4.format(num));//输出9.999
		System.out.println(p5.format(num));//输出9.9990
 
		
	}
}

3、高精度

对于大数来说,Java提供了BigDecimal和BigInteger两个类,都包含在java.math.*里面。

BigInteger是大整形类,BigDecimal是大浮点型类。

这两个类产生的对象没有数据范围,只要你的电脑内存足够就可以。

下面用BigInteger举个例子:

import java.math.BigInteger;
 
public class Main {
	
	public static void main(String[] args)
	
	{
		
		int a=6,b=3;
		
		BigInteger x,y,z;
		
		x=BigInteger.valueOf(a); 		   //转化赋值
		
		y=BigInteger.valueOf(b);
		
		System.out.println(x.add(y));      //加
		
		System.out.println(x.subtract(y)); //减
		
		System.out.println(x.multiply(y)); //乘
		
		System.out.println(x.divide(y));   //除
		
		System.out.println(x.mod(y));      //取余
	}
}

4、进制转换

java一直就是作弊器一般的存在,就像它的进制转换函数一样:

public class Main {
	
	public static void main(String[] args)
	
	{
		String string;
		int a=8;
		int x=2;
		string = Integer.toString(a, x);    //把int型数据转换乘X进制数并转换成string型
		System.out.println(string);
		
		int b = Integer.parseInt(string, x);//把字符串当作X进制数转换成int型
		System.out.println(b);
	}
}

5、字符串

Java中的String   和char数组是完全不同的两种东西。

String中的字符是不能在原位置改变的,要改变必须改变并保存到新的String里,或者保存到char 数组里再修改

import java.io.*;
import java.util.*;
public class Main
{
	public static void main(String[] args) 
	{
		Scanner cin = new Scanner (new BufferedInputStream(System.in));
		String st = "abcdefg";
		System.out.println(st.charAt(0)); // st.charAt(i)就相当于st[i].
		char [] ch;
		ch = st.toCharArray(); // 字符串转换为字符数组.
		for (int i = 0; i < ch.length; i++){
			ch[i] += 1;//字符数组可以像C++   一样操作
		}
		System.out.println(ch); // 输入为“bcdefgh”.
		st = st.substring(1); // 则从第1位开始copy(开头为第0位).
		System.out.println(st);
		st=st.substring(2, 4);  //从第2位copy到第4位(不包括第4位)
		System.out.println(st);//输出“de”
	}
}

作者:lin375691011
来源:CSDN
原文:https://blog.csdn.net/lin375691011/article/details/18798425
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/MimosaX/article/details/89031542