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类的应用相关推荐

  1. JAVA基础再回首(十三)——BigInteger类、BigDecimal类、Date类、DateFormat类、Calendar类

    JAVA基础再回首(十三)--BigInteger类.BigDecimal类.Date类.DateFormat类.Calendar类 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://b ...

  2. NumberFormat类、BigInteger类和BigDecimal类-JAVA

    JAVA数学计算函数的总结 提示:以下是本篇文章正文内容,下面案例可供参考 1.NumberFormat类: (public abstract class NumberFormat extends F ...

  3. Java——BigInteger类和BigDecimal类

    Java--BigInteger类和BigDecimal类 摘要:本文主要学习了用于大数字运算的BigInteger类和BigDecimal类. 部分内容来自以下博客: https://www.cnb ...

  4. Java一个源文件中可以有多个主类

    Java一个源文件中可以有多个主类 一个Java源文件中可以有多个主类,但是只能有一个公共类或者没有公共类,所谓主类就是函数运行的一个入口,public static void main.我们可以通过 ...

  5. 15.Java-正则表达式、Pattern和Matcher类、Math类、Random类、System类、BigDecimal类、BigInteger类

    15.Java-正则表达式.Pattern和Matcher类.Math类.Random类.System类.BigDecimal类.BigInteger类 一.正则表达式的概述和简单使用 A:正则表达式 ...

  6. 4、大数字运算(BigInteger类和BigDecimal类)

    在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类.这两个类用于高精度计算,其中 BigInteger 类是针对 ...

  7. Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱

    问题:Java面试知识点:Object类.BigDecimal类.自动装箱.拆箱 答案: 1.Object类: 代码如下: package com.xy;/*** @ProjectName: day0 ...

  8. 正则表达式、常用类(Pattern类、Matcher类、Math类、System类、Random类、BigDecimal类、Date类、SimpleDateFormat类、Calendar类)

    JAVA学习第十六天-正则表达式.常用类(Pattern类.Matcher类.Math类.System类.Random类.BigDecimal类.Date类.SimpleDateFormat类.Cal ...

  9. java final date_Java中的时间和日期(上)

    自从JDK 1.0开始,Java就提供了Date来处理时间和日期,作为老古董自然有很多东西是过时的.然后出现了Calendar来解决了很多问题,但是Calendar使用比较复杂,并且有些反人类的地方. ...

最新文章

  1. 2022-2028年中国DTRO膜行业市场全景评估及产业前景规划报告
  2. C#机房重构-datagridview控件的使用
  3. boosting算法_集成学习:boosting、BDT、GBDT的概括理解
  4. 晶振噪声及杂散_石英晶体振荡器(简称晶振)介绍
  5. 大学毕业后拉开差距的真正原因--写给将要毕业的自己
  6. 【寒江雪】圆与扇形物体的碰撞检测
  7. 三星s8文档有html,【分享】你不知道的三星s8 : s8/s8+全面屏教程
  8. Linux常见英文报错中文翻译
  9. 世界那么大,如何去看看?进入新世界的框架和脉络
  10. 笔记本电脑下面的任务栏一直转圈圈
  11. Java实现满天星动案例
  12. 清华胡宇迪教授谈关于爱情、关于伴侣、关于承诺、关于人生、关于友情、关于微笑、关于生活、关于幸福...
  13. Java获取图片RGB值
  14. lol 5.24版本top5:火男胜率登顶
  15. 数据结构和算法之暴力递归到动态规划01-绝顶聪明纸牌问题
  16. 完全开源!快速上手 AI 理论及应用实战来了
  17. 《土力学与地基基础(二)》在线平时作业1
  18. 服务器宠物系统,你们升级我抓宠,PVX也能从剑网三怀旧服的升级热潮中找到快乐!...
  19. 2005-04-21
  20. js拼接带冒号:的字符串的方法

热门文章

  1. C++ 重载操作符与转换
  2. 配置Sublime的C语言环境
  3. 控制生成word文档
  4. 无忧答案c语言程序设计,西工大16春《C语言程序设计》平时作业
  5. 【git】git实操笔记
  6. 面试题-批量向MySQL导入1000万条数据有什么方法?
  7. Adobe打印转PDF字体出错问题解决方案
  8. WPF+WCF一步一步打造音频聊天室(三):语音聊天
  9. 导航地图分类隐私政策
  10. python开发工具PyCharm详细使用