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)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入.

原文地址:https://www.cnblogs.com/songorz/p/10326634.html

时间: 2024-10-08 19:06:25

ACM中java中BigInteger和Decimal用到的主要函数的相关文章

Java中 初始化的先后顺序?

我们在java中 Java中初始化的顺寻? java代码: package sru.love.c; class Person { String name = "Person"; static { System.out.println("我是 Person 的 static 代码块"); } { System.out.println("我是 Person 构造代码块"); } Person() { System.out.println("

Java中的BigInteger在ACM中的应用

Java中的BigInteger在ACM中的应用 在ACM中的做题时,经常会遇见一些大数的问题,这是当我们用C或是C++时就会觉得比较麻烦,就想有没有现有的现有的可以直接调用的BigInter,那样就方便很多啦.在java中就有的,所以在这儿我就做一个简要的介绍吧 -:在java中的基本头文件(java中叫包) import java.io.* importjava.util.*       我们所用的输入scanner在这个包中 importjava.math.*          我们下面要

ACM中java的使用 (转)

ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner cin = new Scanner (new BufferedInputStream(System.in)); 例程: import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class

【转】ACM中java的使用

原文博客:http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner cin = new Scanner (new BufferedInputStream(System.in)); 例程: import java.io.*; import

Java中的java.math.BigInteger

Java中的java.math.BigInteger /** * */ package com.you.model; /** * @author YouHaidong * */ public class BigInteger { /** * @param args */ public static void main(String[] args) { java.math.BigInteger one = new java.math.BigInteger("1"); java.math.

利用java中的BigInteger实现进制转换

[原创] java中的进制BigInteger十分的强大,而且好用,他可以表示任意大的整数,同时还可以进行进制转换,十分的方便, 代码示例: 1 package com.jiajia.demo_1; 2 import java.math.BigInteger;//导入该包 3 public class Demo { 4 public static void main(String[] args) { 5 String str = new BigInteger("15", 10).toS

Java中的大数处理类BigInteger和BigDecimar浅析

这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.BigInteger;和import java.math.BigDecimal; BigInteger和BigDecimal分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数).主要用于高精度计算中.这两个类使得java中的大数,高精度运算变得很简单. 下面从几个方面对BigInteger和BigDecima做一个简单的比较: 一.常量 BigInteger:ONE,ZE

ACM中java的使用

建议用IDE比如eclipse,因为有大量函数都会自动显示,相当方便 首先来看一题POJ1274的二分图匹配算法的java实现,给出总体的框架 import java.util.*;//基本框架 //主class必须与文件名相同 但在poj上交时class要改成Main public class poj1274 { //需要设置static变量才可以在static void中使用 相当于全局变量 //数组具体数值需要通过new申请 static int be[], ne[], e[], all;

ACM试题 - 括号配对问题 - Java中字符串截取和定位问题

ACM试题题源(括号配对问题):http://acm.nyist.net/JudgeOnline/problem.php?pid=2 提交代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); String[] ans = new String[n];