package com.BigDecimal;

public class BigDecimalDemo {
/*
* 下面的运算的结果出乎我们的意料,有些准确,有些不准确
* 这是为什么呢?
* 我们知道,数据进行运算时先将它转换成为补码进行运算,所以就设计到一个二进制转换的问题
* 浮点数的小数点后面的数是乘以2得1 0计算二进制的对吧,因为有些小数无论如何就是不能得到0,
* 也就是一个无限的小数类,这样的数据永远无法得到完整的10表示,所以float和double操作时候
* 出现一个叫做有效数字的说法。当然后面一个是可以的,那是因为两个浮点数刚好可以转换好0101
* 这是因为浮点数的存储和整形的存储不同导致的。它们大部分的时候,都是带有有效数字位
* 引出BigDecimal
* 由于在运算的时候,float类型和double很容易丢失精度。所以,为了能精确的表示、计算浮点数,java提供了BigDecimal
* BigDecimal类概述
* 不可变的,任意精度的有符号十进制数。可以解决精度丢失问题
*/
public static void main(String[] args) {
System.out.println(0.09+0.01);//0.09999999999999999
System.out.println(1.0-0.32);//0.6799999999999999
System.out.println(1.015*100);//101.49999999999999
System.out.println(1.301/100);//0.013009999999999999 System.out.println(1.0-0.12);//0.88
} } package com.BigDecimal; import java.math.BigDecimal; /*
* 构造方法
* public BigDecimal(String val)
*
* public BigDecimal add(BigDecimal augend) :加
* public BigDecimal subtract(BigDecimal subtrahend) 减
* public BigDecimal multiply(BigDecimal multiplicand) 乘
* public BigDecimal divide(BigDecimal divisor) 除
* public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) 商 几位小数 如何舍取
*
*
*/
public class BigDecimalDemo02 {
public static void main(String[] args) {
// System.out.println(0.09+0.01);//0.09999999999999999
// System.out.println(1.0-0.32);//0.6799999999999999
// System.out.println(1.015*100);//101.49999999999999
// System.out.println(1.301/100);//
BigDecimal bd1=new BigDecimal("0.09");
BigDecimal bd2=new BigDecimal("0.01");
System.out.println("add:"+bd1.add(bd2));
System.out.println("--------------------------"); BigDecimal bd3=new BigDecimal("1.0");
BigDecimal bd4=new BigDecimal("0.32");
System.out.println("subtract:"+bd3.subtract(bd4));
System.out.println("--------------------------"); BigDecimal bd5=new BigDecimal("1.015");
BigDecimal bd6=new BigDecimal("100");
System.out.println("multiply:"+bd5.multiply(bd6));
System.out.println("--------------------------"); BigDecimal bd7=new BigDecimal("1.301");
BigDecimal bd8=new BigDecimal("100");
System.out.println("divide:"+bd7.divide(bd8));
System.out.println("--------------------------");
System.out.println("divide:"
+bd7.divide(bd8,3,BigDecimal.ROUND_HALF_UP));//ROUND_HALF_UP四舍五入,其他方式舍取看API
System.out.println("divide:"
+bd7.divide(bd8,8,BigDecimal.ROUND_HALF_UP));
}
}
package com.BigInteger;

import java.math.BigInteger;

public class BigIntegerDemo {
/*
* 引入BigInteger
* Integer的范围是太小了,无法进行大的整数运算
* java.math
* 不可变的任意精度的整数。所有操作都以二进制补码进行,说明运算效率高
* 讲一个构造:
* BigInteger(String val)
* 3个常量:
* static BigInteger ONE :常量1
* static BigInteger TEN :常量10
* static BigInteger ZERO :常量0
* 一个方法:
* static valueOf(long val) 返回其值等于指定long值得BigInteger
*/
public static void main(String[] args) {
//这几个测试是为了检测超过int范围内,Integer不能在表示,更谈不上计算
/*Integer i=new Integer(100);
System.out.println(i);
System.out.println(Integer.MAX_VALUE);
Integer ii=new Integer("2147483647");
System.out.println(ii);
Integer iii=new Integer("2147483648");*/ BigInteger bi=new BigInteger("2147483648");
System.out.println(bi);//看出重写了toString()
} } package com.BigInteger; import java.math.BigInteger; /*
* 介绍几个常用方法,其他查看API
* public BigInteger add(BigInteger val):加
* public BigInteger subtract(BigInteger val):减
* public BigInteger multiply(BigInteger val):乘
* public BigInteger divide(BigInteger val):除
* public BigInteger[] divideAndRemainder(BigInteger val) 商和摩的数组
*/
public class BigIntegerDemo2 {
public static void main(String[] args) {
BigInteger bi1=new BigInteger("100");
BigInteger bi2=new BigInteger("50");
System.out.println("add:"+bi1.add(bi2));
System.out.println("subtract:"+bi1.subtract(bi2));
System.out.println("multiply:"+bi1.multiply(bi2));
System.out.println("divide:"+bi1.divide(bi2));
System.out.println("divideAndRemaunder:"+bi1.divideAndRemainder(bi2)[0]+"\t"+bi1.divideAndRemainder(bi2)[1]); } }

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. 详解PHP实现定时任务的五种方法

    这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, 找到几种解决办法,现总结如下. 定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等, ...

  2. scikit-learn 中常用的评估模型

    一,scikit-learn中常用的评估模型 1.评估分类模型: ​ 2.评估回归模型: ​ 二.常见模型评估解析: •对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:(T,F表示预测的 ...

  3. 记一次mysql启动不了的问题

    在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt ...

  4. http之工作原理

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包含请求的方法.URL. ...

  5. ACM-ICPC 2018 徐州赛区网络预赛 Solution

    A. Hard to prepare 题意:有n个客人做成一圈,有$2^k$种面具,对于每种面具有一种面具不能使相邻的两个人戴,共有多少种做法. 思路: 把题意转化成相邻的人不能带同种面具.总数为$( ...

  6. 怎样在linux下对U盘进行格式化和分区

    说明,为了不做无用功,首先必须卸载要分区的设备,分区才能执行成功.通过命令umount /media/?? 或者umount /mnt/??? 看你的实际情况,这一步必不可少.1.首先通过命令fdis ...

  7. cookie的存取删

    存: document.cookie = "name=Kevin;expires="+new Date().getDate()+7; //有效期7天 取: function Get ...

  8. 20145329 《网络对抗技术》 逆向及Bof基础实验

    1.实验内容 本次实践的对象是一个名为20145329的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段,ge ...

  9. 20145221 《Java程序设计》第三周学习总结

    20145221 <Java程序设计>第三周学习总结 教材学习内容总结 第四章部分已在假期完成,详见博客: <Java程序设计>第四章-认识对象 第五章部分 何谓封装 封装实际 ...

  10. usb_submit_urb

    hub_irq() --> usb_submit_urb() usb_start_wait_urb() --> usb_submit_urb() 一旦urb被USB驱动程序正确地创建和初始 ...