ACM中java中BigInteger和Decimal用到的主要函数
java中大数以及高精度常用函数
使用java大数类解决问题时我们需要注意两个方面:1、不能有包名,也就是说我们要把主类放到默认的包里,如果你的代码里出现形如package cn.gov.test;这样的代码你很有可能会收获到RE
2、提交的类的类名必须为Main,如果是其他的名字你有可能收获到CE也有可能收获到WA(例如UVA)
Scanner cin=new Scanner(System.in);// 读入
一.BigInteger
import java.math.BigInteger;
BigInteger.ZERO //大整数0 BigInteger.ONE //大整数1 BigInteger.TEN //大整数10
BigInteger.valueOf(long val)//返回一个BigInteger,其值等于指定long。
public BigInteger(String val) //构造 :讲一个字符串变为BigIngeter类型的数据public BigInteger add(BigInteger val) //普通加法public BigInteger subtract(BigInteger val)//普通减法public BigInteger multiply(BigInteger val)//普通乘法public BigInteger divide(BigInteger val)//普通除法public BigInteger max(BigInteger val)//返回两个数中的最大值public BigInteger min(BigInteger val)//返回两者中的最小值public BigInteger[] divideAndRemainder(BigInteger val)//除法操作,数组的第一个元素作为除法的商,第二个元素作为除法的余数
mod(BigInteger val); //求余
gcd(BigInteger val); //求最大公约数 (以下都简写)
abs();//返回此值的绝对值
and(BigInteger val); //返回 this&val 的BigInteger
andNot(BigInteger val); //返回 this&~val 的BigInteger
bitCount(); //返回BIgInteger的二进制补码形式中与符号不同的位的数量
compareTo(BigInteger val); //将this 与val比较,大于,等于,小于分别返回1,0,-1;
doubleValue(); //将此BigInteger转换为double型返回;
getLowestSetBit();//返回此BigInteger最右端1比特的索引;
hashCode();//返回此BIgInteger的哈希码;
isProbablePrime();//判断是否为素数(true/false);
modInverse(BigInteger m);返回其值为( mod m)的BigInteger;
negate();返回(-this)的BigInteger;
not();// ~this
or(BIgInteger val);// 返回(this | val)
xor(BigInteger val);返回(this^val);
toString(int radix);//返回指定基数的字符串形式
shiftRight(int n);//返回(this>>n)的BigInteger
shiftLeft(int n);//返回值为(thsi<<n)的BigInteger
示例:
public class Main{
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("123456789") ; // 声明BigInteger对象
BigInteger bi2 = new BigInteger("987654321") ; // 声明BigInteger对象
System.out.println("加法操作:" + bi2.add(bi1)) ; // 加法操作
System.out.println("减法操作:" + bi2.subtract(bi1)) ; // 减法操作
System.out.println("乘法操作:" + bi2.multiply(bi1)) ; // 乘法操作
System.out.println("除法操作:" + bi2.divide(bi1)) ; // 除法操作
System.out.println("最大数:" + bi2.max(bi1)) ; // 求出最大数
System.out.println("最小数:" + bi2.min(bi1)) ; // 求出最小数
BigInteger result[] = bi2.divideAndRemainder(bi1) ;//求出余数的除法操作
System.out.println("商是:" + result[0] +
";余数是:" + result[1]) ;
}
}
二.BigDecimal
import java.math.BigDecimal;
public BigDecimal(double val) //构造 将double表示形式转换为BIgDecimalpublic BigDecimal(int val)//同上public BigDecimal(String val)//将字符串表示形式转换为BigDecimalpublic BigDecimal add(BigDecimal augend)//普通加法public BigDecimal subtract(BigDecimal subtrahend)//普通减法public BigDecimal multiply(BigDecimal multiplicand)//普通乘法public BigDecimal divide(BigDecimal divisor)//普通除法
public BigDecimal pow(int n) //返回大数的n次幂
one.compareTo(two); //在数字上比较大小(大于,等于,小于分别返回1,0 -1);
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。
示例:
public class Main{
public static void main(String[] args) {
System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;
System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;
System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),4)) ;
System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;
}
}
BigDecimal.setScale()方法用于格式化小数点
setScale(val)表示保留val位小数,默认用四舍五入方式 setScale(val,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(val,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 setScale(val,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(val,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
setScaler(val,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
setScaler(val,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样
setScaler(val,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入.
ACM中java中BigInteger和Decimal用到的主要函数的更多相关文章
- http请求中java中的302和sendRedirect的区别
============================================================================================ getCont ...
- 如何在win10中Java中JDK的安装和path,classpath的环境配置
1,第一步,不用说肯定是去下一个java JDK了.目前最新版本的java JDK应该是JDK 7.0,这个就自己去百度一下了,好多网站都可以找到.2,第二步就是安装JDK虚拟机了,按照它里面的提示一 ...
- 在实际开发中Java中enum的用法
在日常项目的开发中,往往会存在一些固定的值,而且"数据集"中的元素是有限的. 例如:st_code// 一些状态机制:01-激活 02-未激活 03 -注册..等等 还有一特性 ...
- Java中的BigInteger在ACM中的应用
Java中的BigInteger在ACM中的应用 在ACM中的做题时,常常会遇见一些大数的问题.这是当我们用C或是C++时就会认为比較麻烦.就想有没有现有的现有的能够直接调用的BigInter,那样就 ...
- ACM中Java的应用
先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了.Java的语法和C++非常类似, ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
- ACM 中JAVA的应用
原文地址:http://www.cppblog.com/vontroy/archive/2010/05/24/116233.html 先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C+ ...
- ACM中java的使用 (转)
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...
- java中的大数BigInteger
compareTo比较大小 equals比较是否相等 ,不能用== while(cin.hasNext())//等价于!=EOF n=cin.nextBigInteger();//读入一个大整数 Sy ...
随机推荐
- MySQL-配置环境变量及修改密码(附-mysql安装教程)
MySQL-配置环境变量和修改密码 mysql的安装教程:链接:https://pan.baidu.com/s/1rrPT2X0yRF58kN8jZZx-Mg 密码:55dh 一. 闪退问题 1.1. ...
- Download-学习资源下载
小白求关爱:链接为本人工作中学习所碰到的,如有不对之处,请及时联系加以改正,后续仍会追加新链接地址并及时更新旧链接地址 Jdk历史版本 https://www.oracle.com/technetwo ...
- DAGScheduler stage 划分算法
DAGScheduler stage 划分算法 stage划分算法很重要,对于spark开发人员来说,必须对stage划分算法很清晰,知道自己编写的spark Application被划分成了几个jo ...
- 队列+BFS (附vector初试)
优先队列的使用: include<queue>//关联头文件 struct node{ int x,y; friend bool operator < (node d1,node d ...
- PHP文件上传和下载
第 1 章 文件上传 1.1 客户端上传设置 在 B/S 程序中文件上传已经成为一个常用功能.其目的是客户可以通过浏览器 (Browser) 将文件上传到服务器(Server)上的指定目录. 网络上常 ...
- 在ensp上模拟企业网络场景并Access接口加入相应VLAN
模拟的企业网络大概描述: 公司内网是一个大的局域网,二层交换机S1放置在一楼,在一楼办公的部门有IT部和人事部:二层交换机S2放置在二楼,在二楼办公的部门有市场部和研发部.由于交换机组成的是广播网,交 ...
- css控制ul标签下的指定li标签样式
ul li:first-child{ } 第一个ul li:last-child{ } 最后一个ul li:nth-child(4){ } 指定第几个,4就是代表第四个ul li:nth-chi ...
- VS Code实现markdown画流程图
安装最新的vscode编辑器,原生支持markdown语法.不会markdow的人可以去好好学下,写文档神器!!! 1.安装Markdown Preview Enhanced插件 2.本地新建test ...
- 从BWM生产学习工厂模式
工厂模式应用非常之广,在JDK底层源码以及各大主流框架中随处可见,一般以Factory结尾命名的类,比如Mybatis中的SqlSessionFactory,Spring中的BeanFactory等, ...
- 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同
原文链接:http://www.cnblogs.com/xiaoyou2018/p/10677437.html Windows server 2012 R2 解决"无法完成域加入,原因是试图 ...