package cn.sasa.demo5;

import java.math.BigDecimal;
import java.math.BigInteger; public class BigDataDemo {
public static void main(String[] args) {
//BigInteger
//数字太大,超过了long的范围
//long num1 = 9999999999999999999999999999999999999999999999L;
BigInteger num1 = new BigInteger("999999999999999999999999999999999477");
BigInteger num2 = new BigInteger("77777597111111111111111117777");
//加法
BigInteger addNum = num1.add(num2);
System.out.println(addNum); //减法
BigInteger subNum = num1.subtract(num2);
System.out.println(subNum); //乘法
BigInteger mulNum = num1.multiply(num2);
System.out.println(mulNum); //除法
BigInteger divNum = num1.divide(num2);
System.out.println(divNum); //BigDecimal
//double 会造成精度不准确
// double num3 = 0.01 + 0.09;
// System.out.println(num3);//0.09999999999999999
// System.out.println(0.03-0.01);//0.019999999999999997
// System.out.println(1.0023 * 100);//100.22999999999999
// System.out.println(1.301 / 100);//0.013009999999999999 BigDecimal deci1 = new BigDecimal("0.01");
BigDecimal deci2 = new BigDecimal("0.09"); BigDecimal addDeci = deci1.add(deci2);
System.out.println(addDeci);//0.10 BigDecimal deci3 = new BigDecimal("0.03");
BigDecimal deci4 = new BigDecimal("0.01");
BigDecimal subDeci = deci3.subtract(deci4);
System.out.println(subDeci);//0.02 BigDecimal deci5 = new BigDecimal("1.0023");
BigDecimal deci6 = new BigDecimal("100");
BigDecimal mulDeci = deci5.multiply(deci6);
System.out.println(mulDeci);//100.2300 BigDecimal deci7 = new BigDecimal("1.301");
BigDecimal diviDeci = divideBigDecimal(deci7, deci3);
System.out.println(diviDeci); } //BigDecimal 的除法运算
static BigDecimal divideBigDecimal(BigDecimal num1, BigDecimal num2) {
/**
* BigDecimal 除不尽会抛异常,解决方式:
* divide(divisor, scale, roundingMode)
* divisor 除数
* scale 保留几位小数
* roundingMode 保留模式
* static int ROUND_UP 向上+1
* static int ROUND_DOWN 直接舍去
* static int ROUND_HALF_UP >= 0.5 向上+1
* static int ROUND_HALF_DOWN > 0.5 向上+1 ,否则直接舍去
*/
@SuppressWarnings("deprecation")
BigDecimal rs = num1.divide(num2, 2, BigDecimal.ROUND_DOWN); //jdk9 之后会警告这个方法已过期
//BigDecimal rs = num1.divide(num2);
return rs;
}
}

java 大数据运算 BigInteger BigDecimal的更多相关文章

  1. 7、包装类、System、Math、Arrays、大数据运算

    基本类型封装 基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字 ...

  2. JAVA基础之基本类型包装类、System类、Math类、Arrays类及大数据运算

    个人理解: 为了方便运算及调用一些方法,我们需要将基本类型的数值转换为对象:不过转换的时候需要特别注意好它们的类型到底是什么,需要调用方法的类名是哪个!特别注意是Byte常量池的相关问题(==):gc ...

  3. java基础(17):包装类、System、Math、Arrays、大数据运算

    1. 基本类型包装类 大家回想下,在第三篇文章中我们学习Java中的基本数据类型时,说Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢? 1.1 基本类型 ...

  4. Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器

    基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...

  5. 基本类型包装类、System类、Math类、Arrays类、大数据运算

    1 基本类型包装类 Java中想对8种基本数据类型进行复杂操作很困难. 实际程序界面上用户输入的数据都是以字符串类型进行存储的. 程序开发中,需要把字符串转换成指定的基本数据类型. 1.1基本数据类型 ...

  6. 常用API(包装类、System、Math、Arrays、大数据运算)

    常用API 今日内容介绍 u 基本类型包装类 u System u Math u Arrays u BigInteger u BigDecimal 第1章 基本类型包装类 大家回想下,在第二天我们学习 ...

  7. 17_常用API_第17天(包装类、System、Math、Arrays、大数据运算)_讲义

    今日内容介绍 1.基本类型包装类 2.System类 3.Math类 4.Arrays类 5.大数据运算 01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 ...

  8. 使用Stack堆栈集合大数据运算

    使用Stack堆栈集合大数据运算 package com.sta.to; import java.util.Iterator; import java.util.Stack; public class ...

  9. 大数据运算模型 MapReduce 原理

    大数据运算模型 MapReduce 原理 2016-01-24 杜亦舒 MapReduce 是一个大数据集合的并行运算模型,由google提出,现在流行的hadoop中也使用了MapReduce作为计 ...

随机推荐

  1. Android调用相机拍摄照片并显示到 ImageView控件中

    在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见 Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实例 ...

  2. 教程:SpagoBI开源商业智能之XML Template 图表模板

    SpagoBI offers a variety of widgets' examples realized with the Highcharts library, that can be divi ...

  3. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet

    Apache Commons Lang. 在版本3中,enum相关的工具就留下EnumUtils. 首先, 所有enum,都默认实现了抽象类 java.lang.Enum .所以,所有enum都具备E ...

  4. Java如何计数字串中的一组词组?

    在Java编程中,如何计数字串中的一组词组? 以下示例演示如何使用regex.Matcher类的matcher.groupCount()方法来计算字符串中的一组词组. package com.yiib ...

  5. 【Oracle】ORA 01810 格式代码出现两次-转

    一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') fr ...

  6. 嵌入式开发之UDP 丢包--- UDP 丢包控制方法

    0. 发送端可以,发送五次左右,再Sleep 1.调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收 ...

  7. Mysql 查看连接数,状态 最大并发数 && 怎么设置才合理

    show status like '%max_connections%'; ##mysql最大连接数 set global max_connections=1000 ##重新设置 show varia ...

  8. [Localization] R-CNN series for Localization and Detection

    CS231n Winter 2016: Lecture 8 : Localization and Detection CS231n Winter 2017: Lecture 11: Detection ...

  9. SpringBoot------全局异常捕获和自定义异常

    1.添加Maven依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  10. 一个手写的 http client

    public class HTTPClient { public static final String GET = "GET"; public static final Stri ...