这篇博客内的许多东西都是从大佬那里总(ban)结(yun)来的,之前浏览了很多博客,有些没有放在收藏夹里,大佬别打我w(゚Д゚)w
之所以学java 也是因为大数,高精度方面的题目做起来代码量会少一些
这里先贴几个收藏夹里面还有的连接
膜大佬
膜大佬
膜大佬
作为一名蒟蒻,我之前敲过一小点代码 (轻拍)(┭┮﹏┭┮)
这些都是在看了大佬的总结后实验的,有些是在杭电oj做题遇到了的就顺便写了一些容易被忽略的。
代码也有很多参照大佬的地方。
有些地方有“//”是之前为了调试弄得
import java.math.*;
public class biginteger {
public static void main(String args[]) {
// int a = 123, b = 456999, c = 7890;
// BigInteger x, y, z, ans;
// x =new BigInteger("459999"); y = BigInteger.valueOf(b); z = BigInteger.valueOf(c);
// ans=x.add(y);
// System.out.println(" "+ans);
// int m=x.compareTo(y);
// if(x.compareTo(y)>0)
// System.out.println("Yes");
// if(x.compareTo(y)<0)
// System.out.println("No");
// if(x.compareTo(y)==0)
// System.out.println("equal");
int num=10;
String st = Integer.toString(num, 2); // (num,back)把num当做10进制的数转成back进制的st(back <= 35).
num = Integer.parseInt(st, 8); // (st,back)把st当做back进制,转成10进制的int(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).
}
}
注释里面都有写,就不啰嗦了(#^.^#)
package BigInteger;
import java.util.*;
import java.math.*;
import java.text.*;
public class test1 {
public static void main(String args[]) {
System.out.println("hello world");
//Scanner + String 输入方式 +字符串 import java.util.*(输入);
/* String a;
Scanner in=new Scanner(System.in); //输入12 23
a=in.nextLine(); // 可含有空格,回车结束//输入12 23
String m=in.next(); //不可含有空格 遇到空格结束
System.out.println("test"+" "+ a+"\n"+m); //结果:test 12 23(换行)
//12
String b="yang 123456";
char c=b.charAt(0);
//substring 子串从(int x)到结尾 (int x,int y)从 x 到 y
System.out.println("测试"+b.substring(2)+" "+b.substring(2,7)+" "+"测试c "+c); //结果:测试ng 123456 ng 12 测试c y
*/
//BigInteger 整数 import java.math.*;
/*BigInteger bi1=new BigInteger("11111111111111111111");
BigInteger bi2=new BigInteger("22222222222222222222");
BigInteger bi3=bi2.add(bi1);//加
BigInteger bi4=bi2.subtract(bi1);//减
BigInteger bi5=bi1.divide(bi2);//除
BigInteger bi6=bi2.multiply(bi1);//乘
System.out.println("BigInteger test"+" "+bi3+" "+bi4+"\n"+bi5);
}
*/
//BigDecimal 小数 import java.math.*;
// BigDecimal b1=new BigDecimal("11111111111.11111");
// BigDecimal b2=new BigDecimal("22222222223.2332");
// BigDecimal b3=b1.add(b2); //加法
// BigDecimal b4=b1.multiply(b1); //乘法
// BigDecimal result[]=b2.divideAndRemainder(b1);//商result[0]和余数 result[1]
// System.out.println("BigDecimal"+" "+b3+"乘法"+b4+"商"+result[0]+" 余数"+result[1]);
//DecimalFormat 格式输出 import java.text.*;
/*DecimalFormat test1=new DecimalFormat("#.000000000#####");//小数部分超出的位数四舍五入(只看前一位)
//“#”若“#”为高位且高位为0则不显示
DecimalFormat test2=new DecimalFormat("0000000.0000000");
System.out.println(test1.format(34556.124553));
System.out.println(test2.format(34556.124553));
*/
}
}
这个是关于toPlainString的
import java.util.*;
import java.math.*;
public class toPlainstringANDstripTrailingZeros {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
BigDecimal a,b;
while(in.hasNextBigDecimal()) {
a=in.nextBigDecimal();
b=in.nextBigDecimal();
BigDecimal c=a.add(b);
System.out.println(c.stripTrailingZeros().toPlainString());//可以实现去掉末尾的0,,这里如果使用toString()
//会变成科学计数法输出,
//toPlainString可以输出数值
}
}
}
这是计算次方的
import java.util.*;
import java.math.*;
import java.text.*;
public class pow {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
int n;
BigDecimal q;
BigDecimal ans;
BigDecimal z=new BigDecimal("0");
while(in.hasNext()) {
ans=new BigDecimal("1");
q=in.nextBigDecimal();
n=in.nextInt();
String aa;
if(q.compareTo(z)==0)
System.out.println("0");
else {
for(int i=0;i<n;i++)
ans=ans.multiply(q);
aa=ans.stripTrailingZeros().toPlainString();//直接以字符串转入,toString会导致回到科学计数
if(aa.startsWith("0"))
aa=aa.substring(1); //如果从零开始去掉零
System.out.println(aa);
}
}
}
}
之前学到的就是这些吧,以后学到的再贴上来(#^.^#)