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. ADO.NET 数据库备份等操作

    public class SqlServerBackup { private string database; private string server; private string uid; p ...

  2. Linux 下用 valgrind 查找内存泄漏小例子

    1.安装 valgrind yum install valgrind 2.测试用例 main.cpp #include <iostream> using namespace std; st ...

  3. CentOS下安装Vmtools

    基本步骤差不多 [root@rd01 ~]# cd /media [root@rd01 ~]# ls -a [root@rd01 ~]# cp VMwareTools-5.5.1-19175.tar. ...

  4. Cisco NTP配置

    Windows 或 Linux 系统配置成NTP服务器,思科交换机配置成NTP客户端 ##创建VLAN 10 SW01>enable SW01#vlan database SW01(vlan)# ...

  5. R语言三元相图的做法

    通常情况下,对于三维数据,我们会用三维图表来展示,想要从三维图表上观察出一定的规律,需要一定的空间想象力: 而三元相图,其实就是用二维平面的1个等边三角形来表征三维数据,三角形的每一条边对应1个维度, ...

  6. Spark学习笔记——读写MySQL

    1.使用Spark读取MySQL中某个表中的信息 build.sbt文件 name := "spark-hbase" version := "1.0" scal ...

  7. vue返回上一页面如果没有上一页面返回首页

    methods: { back(){ if (window.history.length <= 1) { this.$router.push({path:'/'}) return false } ...

  8. 条件变脸pthread_cond_signal丢失问题

    直接上代码: static bsem_t bsem; void* t1(void *arg) { /*printf("enter task 1\n");*/ /*while(1)* ...

  9. 【转载】eclipse常用插件在线安装地址或下载地址

    一,反编译插件: A.Jadclipse 1.打开eclipse增加站点:http://jadclipse.sf.net/update,在线安装好JDT Decompiler 3.4.0 2.http ...

  10. 实用方法 - 解决360Doc文章不能复制的问题(实现不登录直接复制)

    问题: 有时搜索文章的时候看到一些有用的文字,或者在网上搜索一些文献资料,找到需要的部分后,通常都可以使用 Ctrl + C,或者右键复制下来.但有些网站,比如:360个人图书馆(360Doc)会强制 ...