1. package com.BigDecimal;
  2.  
  3. public class BigDecimalDemo {
  4. /*
  5. * 下面的运算的结果出乎我们的意料,有些准确,有些不准确
  6. * 这是为什么呢?
  7. * 我们知道,数据进行运算时先将它转换成为补码进行运算,所以就设计到一个二进制转换的问题
  8. * 浮点数的小数点后面的数是乘以2得1 0计算二进制的对吧,因为有些小数无论如何就是不能得到0,
  9. * 也就是一个无限的小数类,这样的数据永远无法得到完整的10表示,所以float和double操作时候
  10. * 出现一个叫做有效数字的说法。当然后面一个是可以的,那是因为两个浮点数刚好可以转换好0101
  11. * 这是因为浮点数的存储和整形的存储不同导致的。它们大部分的时候,都是带有有效数字位
  12. * 引出BigDecimal
  13. * 由于在运算的时候,float类型和double很容易丢失精度。所以,为了能精确的表示、计算浮点数,java提供了BigDecimal
  14. * BigDecimal类概述
  15. * 不可变的,任意精度的有符号十进制数。可以解决精度丢失问题
  16. */
  17. public static void main(String[] args) {
  18. System.out.println(0.09+0.01);//0.09999999999999999
  19. System.out.println(1.0-0.32);//0.6799999999999999
  20. System.out.println(1.015*100);//101.49999999999999
  21. System.out.println(1.301/100);//0.013009999999999999
  22.  
  23. System.out.println(1.0-0.12);//0.88
  24. }
  25.  
  26. }
  27.  
  28. package com.BigDecimal;
  29.  
  30. import java.math.BigDecimal;
  31.  
  32. /*
  33. * 构造方法
  34. * public BigDecimal(String val)
  35. *
  36. * public BigDecimal add(BigDecimal augend) :加
  37. * public BigDecimal subtract(BigDecimal subtrahend) 减
  38. * public BigDecimal multiply(BigDecimal multiplicand) 乘
  39. * public BigDecimal divide(BigDecimal divisor) 除
  40. * public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) 商 几位小数 如何舍取
  41. *
  42. *
  43. */
  44. public class BigDecimalDemo02 {
  45. public static void main(String[] args) {
  46. // System.out.println(0.09+0.01);//0.09999999999999999
  47. // System.out.println(1.0-0.32);//0.6799999999999999
  48. // System.out.println(1.015*100);//101.49999999999999
  49. // System.out.println(1.301/100);//
  50. BigDecimal bd1=new BigDecimal("0.09");
  51. BigDecimal bd2=new BigDecimal("0.01");
  52. System.out.println("add:"+bd1.add(bd2));
  53. System.out.println("--------------------------");
  54.  
  55. BigDecimal bd3=new BigDecimal("1.0");
  56. BigDecimal bd4=new BigDecimal("0.32");
  57. System.out.println("subtract:"+bd3.subtract(bd4));
  58. System.out.println("--------------------------");
  59.  
  60. BigDecimal bd5=new BigDecimal("1.015");
  61. BigDecimal bd6=new BigDecimal("100");
  62. System.out.println("multiply:"+bd5.multiply(bd6));
  63. System.out.println("--------------------------");
  64.  
  65. BigDecimal bd7=new BigDecimal("1.301");
  66. BigDecimal bd8=new BigDecimal("100");
  67. System.out.println("divide:"+bd7.divide(bd8));
  68. System.out.println("--------------------------");
  69. System.out.println("divide:"
  70. +bd7.divide(bd8,3,BigDecimal.ROUND_HALF_UP));//ROUND_HALF_UP四舍五入,其他方式舍取看API
  71. System.out.println("divide:"
  72. +bd7.divide(bd8,8,BigDecimal.ROUND_HALF_UP));
  73. }
  74. }
  1. package com.BigInteger;
  2.  
  3. import java.math.BigInteger;
  4.  
  5. public class BigIntegerDemo {
  6. /*
  7. * 引入BigInteger
  8. * Integer的范围是太小了,无法进行大的整数运算
  9. * java.math
  10. * 不可变的任意精度的整数。所有操作都以二进制补码进行,说明运算效率高
  11. * 讲一个构造:
  12. * BigInteger(String val)
  13. * 3个常量:
  14. * static BigInteger ONE :常量1
  15. * static BigInteger TEN :常量10
  16. * static BigInteger ZERO :常量0
  17. * 一个方法:
  18. * static valueOf(long val) 返回其值等于指定long值得BigInteger
  19. */
  20. public static void main(String[] args) {
  21. //这几个测试是为了检测超过int范围内,Integer不能在表示,更谈不上计算
  22. /*Integer i=new Integer(100);
  23. System.out.println(i);
  24. System.out.println(Integer.MAX_VALUE);
  25. Integer ii=new Integer("2147483647");
  26. System.out.println(ii);
  27. Integer iii=new Integer("2147483648");*/
  28.  
  29. BigInteger bi=new BigInteger("2147483648");
  30. System.out.println(bi);//看出重写了toString()
  31. }
  32.  
  33. }
  34.  
  35. package com.BigInteger;
  36.  
  37. import java.math.BigInteger;
  38.  
  39. /*
  40. * 介绍几个常用方法,其他查看API
  41. * public BigInteger add(BigInteger val):加
  42. * public BigInteger subtract(BigInteger val):减
  43. * public BigInteger multiply(BigInteger val):乘
  44. * public BigInteger divide(BigInteger val):除
  45. * public BigInteger[] divideAndRemainder(BigInteger val) 商和摩的数组
  46. */
  47. public class BigIntegerDemo2 {
  48. public static void main(String[] args) {
  49. BigInteger bi1=new BigInteger("100");
  50. BigInteger bi2=new BigInteger("50");
  51. System.out.println("add:"+bi1.add(bi2));
  52. System.out.println("subtract:"+bi1.subtract(bi2));
  53. System.out.println("multiply:"+bi1.multiply(bi2));
  54. System.out.println("divide:"+bi1.divide(bi2));
  55. System.out.println("divideAndRemaunder:"+bi1.divideAndRemainder(bi2)[0]+"\t"+bi1.divideAndRemainder(bi2)[1]);
  56.  
  57. }
  58.  
  59. }

BigDecimal 、BigInteger的更多相关文章

  1. Java 之 数学相关类 Math、BigInteger、BigDecimal

    一.java.lang.Math 类 一.Math 类概述 java.lang.Math 类包含用于执行基本数学运算的方法,如指数.对数.平方根和三角函数.类似于这样的类,其所有方法均为静态方法,并且 ...

  2. java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal

    一.字符串相关的类 1.String及常用方法 1.1 String的特性 String:字符串,使用一对""引起来表示. String声明为final的,不可被继承 String ...

  3. Java中的常用类:包装类、String、StringBuffer、StringBuilder、Math、System、Arrays、BigInteger、BigDecimal、Data、Calendar

    一.包装类 √ 二.String类 ★ 三.StringBuffer和StringBuilder类 ★ 四.Math类 五.System类 六.Arrays类 七.BigInteger类和BigDec ...

  4. 经常使用的系统类Math、Arrays、System、BigInteger和BigDecimal以及日期类,时间戳

    一.Math 常用类: //看看Math常用的方法(静态方法)//1.abs绝对值int abs = Math . abs(-9);System. out . printLn(abs);//9//2. ...

  5. [Day17]常用API(System、Math、Arrays、BigInteger、BigDecimal)

    1.基本类型包装类 1.1 8种基本类型对应的包装类 字节型 byte Byte 短整型 short Short 整型 int Integer 长整型 long Long 字符型 char Chara ...

  6. 正则表达式、Calendar类、SimpleDateFormat类、Date类、BigDecimal类、BigInteger类、System类、Random类、Math类(Java基础知识十四)

    1.正则表达式的概述和简单使用 * A:正则表达式(一个字符串,是规则)     * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * B: ...

  7. [常用类]Math、Random、System、BigInteger、BigDecimal

    Math类中的成员全是静态成员,构造方法是 私有的,以避免被创建对象 常用方法: int abs() double ceil() //向上取整 double floor() //向下取整 int ma ...

  8. Math类、Random类、System类、BigInteger类、BigDecimal类、Date类、SimpleDateFormat、Calendar类

    Math类* A:Math类概述 * Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. * B:成员方法 * public static int abs(int a)  ...

  9. Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)

    Math类:数学工具类,做一些数学计算,开方,对数,三角函数等 所有方法都是静态方法,不需要建立对象,直接用类名调用即可 示例: 这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即 ...

随机推荐

  1. 005-spring cache-配置缓存存储

    一.概述 缓存抽象提供了多种存储集成.要使用它们,需要简单地声明一个适当的CacheManager - 一个控制和管理Caches的实体,可用于检索这些实体以进行存储. 1.1.基于JDK Concu ...

  2. [随感]GIS开发的困惑

    从事GIS应用开发也有3年了,但是做了些东西自己始终不满意,不是不稳定就是效率低,不是功能杂就是不实用! 首先是AE开发,我必须说自己很欣赏ArcGIS的软件设计架构和思想.但是在开发的过程中也确实遇 ...

  3. Hadoop权限认证的执行流程

    Hadoop分布式文件系统实现了一个和POSIX系统类似的文件和目录的权限模型.每个文件和目录有一个所有者(owner)和一个组(group).文件或目录对其所有者.同组的其他用户以及所有其他用户分别 ...

  4. 史上最全的MonkeyRunner自动化测试从入门到精通(3)

    原文地址https://blog.csdn.net/liu_jing_hui/article/details/60956088 MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的 ...

  5. MongoDB之Replica Set(复制集复制)

    MongoDB支持两种复制模式: 主从复制(Master/Slave) 复制集复制(Replica Set) 下面主要记录我在centos虚拟机上安装replica set,主要参考:http://d ...

  6. Educational Codeforces Round 54 (Rated for Div. 2) Solution

    A - Minimizing the String solved 题意:给出一个字符串,可以移掉最多一个字符,在所有可能性中选取一个字典序最小的. 思路:显然,一定可以移掉一个字符,如果移掉的字符的后 ...

  7. BabelMap 10.0.0.3 汉化版已经发布

    新的 BabelMap 在日前发布. 新版本增加了字符书签的管理功能,以及将窗口最小化到系统通知栏(时钟区域)的功能. 请点击主页左上角进入下载页面下载.

  8. 【android】移植IOS视图响应陀螺仪交互行为

    IOS有个很有趣味的特性:背景图片可以响应陀螺仪方向的变化,去改变X.Y轴上的值,从而让整个界面看着充满着灵性.具体步骤是:解锁苹果产品,在IOS7以上,摆动手势,观察桌面背景图片的变化. 刚好,我们 ...

  9. 【转载】JS Number类型数字位数及IEEE754标准

    JS的基础类型Number,遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit.如图 意义 1位用来表示符号位 11位用来表示指数 52位表示尾数 浮 ...

  10. Python笔记 #13# Pandas: Viewing Data

    感觉很详细:数据分析:pandas 基础 import pandas as pd import numpy as np import matplotlib.pyplot as plt dates = ...