java final bigd_java中的BigInteger类和BigDecimal类的应用
JAVA的两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,理论上能够表示无限大的数。
BigInteger表示:
package com.xujin;
import java.util.*;
import java.math.*;
public class Test {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
//BigInteger类型的常量
BigInteger A = BigInteger.ONE;
System.out.println("BigInteger.ONE的结果为 " + A);//1
BigInteger B = BigInteger.TEN;
System.out.println("BigInteger.TEN的结果为 " + B);//10
BigInteger C = BigInteger.ZERO;
System.out.println("BigInteger.ZERO的结果为 " + C);//0
//初始化
BigInteger c = new BigInteger("12345670",8);//c = 01234567890 ,八进制
System.out.println(c);//2739128
BigInteger d = BigInteger.valueOf(100);//d = 100
BigInteger e = new BigInteger(new byte[]{1,0});//00000001 00000000
System.out.println(e);//256
System.out.println(e.bitCount());
System.out.println(e.bitLength());
//运算
System.out.println("请输入大整数a,b");
while (cin.hasNext()) {//等同于!=EOF
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
BigInteger c1 = a.add(b); // 大数加法
System.out.println("加的结果为 " + c1);
BigInteger c2 = a.subtract(b); // 大数减法
System.out.println("减的结果为 " + c2);
BigInteger c3 = a.multiply(b); // 大数乘法
System.out.println("乘的结果为 " + c3);
BigInteger c4 = a.divide(b); // 大数除法
System.out.println("除的结果为 " + c4);
BigInteger c5 = a.mod(b);
System.out.println("模的结果为 " + c5);
BigInteger cc5 = a.remainder(b);
System.out.println("余的结果为 " + cc5);
BigInteger c6 = a.max(b);// 取最大
System.out.println("最大为 " + c6);
BigInteger c7 = a.min(b); // 取最小
System.out.println("最小为 " + c7);
BigInteger c8 = a.pow(10); //指数运算
System.out.println("指数运算结果为" + c8);
if (a.equals(b)) // 判断是否相等
System.out.println("相等");
else
System.out.println("不相等");
BigInteger c10 = a.abs(); // 求绝对值
System.out.println("a的绝对值为 " + c10);
BigInteger c11 = a.negate(); // 求相反数
System.out.println("a的相反数为 " + c11);
}
}
}
BigDecimal表示:
//创建BigDecimal对象
BigDecimal bigNumber = new BigDecimal("89.1234567890123456789");
BigDecimal bigRate = new BigDecimal(1000);
BigDecimal bigResult = new BigDecimal(); //对象bigResult的值为0.0
注意,BigDecimal中的divide函数和BigInteger中的稍有不同。
方法1:pubilc BigDecimal divide(BigDecimal divisor)
API中的解释: 返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());如果无法表示准确的商值(因为它有无穷的十进制扩展),则抛出 ArithmeticException。
方法2:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
scale指的是小数点后的位数。比如123.456则scale就是3,是BigDecimal类中的方法啊。比如:BigDecimal b = new BigDecimal("123.456");//b.scale(),返回的就是3.roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段。
比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。
pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式,是四舍五入啊还是其它的,你可以自己选!
方法3:pubilc BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
Fields
final public static BigDecimal
ZERO
since
1.5
final public static BigDecimal
ONE
since
1.5
final public static BigDecimal
TEN
since
1.5
final public static int
ROUND_UP
final public static int
ROUND_DOWN
final public static int
ROUND_CEILING
BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同。注意,此舍入模式始终不会减少计算值。
final public static int
ROUND_FLOOR
BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同。注意,此舍入模式始终不会增加计算值。
final public static int
ROUND_HALF_UP
ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。注意,这是我们大多数人在小学时就学过的舍入模式。
final public static int
ROUND_HALF_DOWN
ROUND_UP相同;否则舍入行为与 ROUND_DOWN 相同。
final public static int
ROUND_HALF_EVEN
ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
final public static int
ROUND_UNNECESSARY
ArithmeticException。
与上面的大整数同样的函数:
package com.xujin;
import java.util.*;
import java.math.*;
public class Test {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
//BigDecimal类型的常量
BigDecimal A = BigDecimal.ONE;
System.out.println("BigDecimal.ONE的结果为 " + A);//1
BigDecimal B = BigDecimal.TEN;
System.out.println("BigDecimal.TEN的结果为 " + B);//10
BigDecimal C = BigDecimal.ZERO;
System.out.println("BigDecimal.ZERO的结果为 " + C);//0
//初始化
BigDecimal c = new BigDecimal("89.1234567890123456789");
BigDecimal d = new BigDecimal(100);
BigDecimal e = new BigDecimal(new char[]{'2','1','.','2'});
System.out.println(e);//21.2
//运算
System.out.println("请输入大整数a,b");
while (cin.hasNext()) {//等同于!=EOF
BigDecimal a = cin.nextBigDecimal();
BigDecimal b = cin.nextBigDecimal();
BigDecimal c1 = a.add(b); // 大数加法
System.out.println("加的结果为 " + c1);
BigDecimal c2 = a.subtract(b); // 大数减法
System.out.println("减的结果为 " + c2);
BigDecimal c3 = a.multiply(b); // 大数乘法
System.out.println("乘的结果为 " + c3);
//注意,这里如果不能除尽,就会抛出一个ArithmeticException错误
BigDecimal c4 = a.divide(b); // 大数除法
System.out.println("除的结果为 " + c4);
BigDecimal cc5 = a.remainder(b);
System.out.println("余的结果为 " + cc5);
BigDecimal c6 = a.max(b);// 取最大
System.out.println("最大为 " + c6);
BigDecimal c7 = a.min(b); // 取最小
System.out.println("最小为 " + c7);
BigDecimal c8 = a.pow(10); //指数运算
System.out.println("指数运算结果为" + c8);
if (a.equals(b)) // 判断是否相等
System.out.println("相等");
else
System.out.println("不相等");
BigDecimal c10 = a.abs(); // 求绝对值
System.out.println("a的绝对值为 " + c10);
BigDecimal c11 = a.negate(); // 求相反数
System.out.println("a的相反数为 " + c11);
}
}
}
实用格式转换:
//去后缀0
BigDecimal bd = new BigDecimal("12000.87300");
bd = bd.stripTrailingZeros();
System.out.println(bd);
bd = new BigDecimal("1.2E-3");
// bd = new BigDecimal("1.2E+3");
//去科学记数
if(bd.scale()<0){
bd = bd.setScale(0);
}
System.out.println(bd);
//保留N位小数. N=5:
bd = new BigDecimal("12000.873000");
bd = bd.setScale(5, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
参考资料:
java API http://doc.java.sun.com/DocWeb/api/java.math.BigDecimal
http://blog.163.com/wangyongfei_2008@yeah/blog/static/1722383292011535174177/ http://qingfengxia2.blog.163.com/blog/static/25478407201012442119977/ http://www.cnblogs.com/ffjjqqjj/archive/2011/07/14/2105893.html 等
java final bigd_java中的BigInteger类和BigDecimal类的应用相关推荐
- JAVA基础再回首(十三)——BigInteger类、BigDecimal类、Date类、DateFormat类、Calendar类
JAVA基础再回首(十三)--BigInteger类.BigDecimal类.Date类.DateFormat类.Calendar类 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://b ...
- NumberFormat类、BigInteger类和BigDecimal类-JAVA
JAVA数学计算函数的总结 提示:以下是本篇文章正文内容,下面案例可供参考 1.NumberFormat类: (public abstract class NumberFormat extends F ...
- Java——BigInteger类和BigDecimal类
Java--BigInteger类和BigDecimal类 摘要:本文主要学习了用于大数字运算的BigInteger类和BigDecimal类. 部分内容来自以下博客: https://www.cnb ...
- Java一个源文件中可以有多个主类
Java一个源文件中可以有多个主类 一个Java源文件中可以有多个主类,但是只能有一个公共类或者没有公共类,所谓主类就是函数运行的一个入口,public static void main.我们可以通过 ...
- 15.Java-正则表达式、Pattern和Matcher类、Math类、Random类、System类、BigDecimal类、BigInteger类
15.Java-正则表达式.Pattern和Matcher类.Math类.Random类.System类.BigDecimal类.BigInteger类 一.正则表达式的概述和简单使用 A:正则表达式 ...
- 4、大数字运算(BigInteger类和BigDecimal类)
在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类.这两个类用于高精度计算,其中 BigInteger 类是针对 ...
- Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱
问题:Java面试知识点:Object类.BigDecimal类.自动装箱.拆箱 答案: 1.Object类: 代码如下: package com.xy;/*** @ProjectName: day0 ...
- 正则表达式、常用类(Pattern类、Matcher类、Math类、System类、Random类、BigDecimal类、Date类、SimpleDateFormat类、Calendar类)
JAVA学习第十六天-正则表达式.常用类(Pattern类.Matcher类.Math类.System类.Random类.BigDecimal类.Date类.SimpleDateFormat类.Cal ...
- java final date_Java中的时间和日期(上)
自从JDK 1.0开始,Java就提供了Date来处理时间和日期,作为老古董自然有很多东西是过时的.然后出现了Calendar来解决了很多问题,但是Calendar使用比较复杂,并且有些反人类的地方. ...
最新文章
- 2022-2028年中国DTRO膜行业市场全景评估及产业前景规划报告
- C#机房重构-datagridview控件的使用
- boosting算法_集成学习:boosting、BDT、GBDT的概括理解
- 晶振噪声及杂散_石英晶体振荡器(简称晶振)介绍
- 大学毕业后拉开差距的真正原因--写给将要毕业的自己
- 【寒江雪】圆与扇形物体的碰撞检测
- 三星s8文档有html,【分享】你不知道的三星s8 : s8/s8+全面屏教程
- Linux常见英文报错中文翻译
- 世界那么大,如何去看看?进入新世界的框架和脉络
- 笔记本电脑下面的任务栏一直转圈圈
- Java实现满天星动案例
- 清华胡宇迪教授谈关于爱情、关于伴侣、关于承诺、关于人生、关于友情、关于微笑、关于生活、关于幸福...
- Java获取图片RGB值
- lol 5.24版本top5:火男胜率登顶
- 数据结构和算法之暴力递归到动态规划01-绝顶聪明纸牌问题
- 完全开源!快速上手 AI 理论及应用实战来了
- 《土力学与地基基础(二)》在线平时作业1
- 服务器宠物系统,你们升级我抓宠,PVX也能从剑网三怀旧服的升级热潮中找到快乐!...
- 2005-04-21
- js拼接带冒号:的字符串的方法