java 大数值BigInteger与BigDecimal
2017-08-21 16:06
447 查看
如果基本的整数和浮点数精度不能够满足要求,那么可以使用java.math包中的两个很有用的类:BigInteger与BigDecimal类。这两个类可以处理任意长度数字序列中的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
使用静态的valueOf方法可以讲普通的数据转化为大数值:
BigInteger a=BigInteger.valueOf(100);
使用静态的valueOf方法可以讲普通的数据转化为大数值:
BigInteger a=BigInteger.valueOf(100);
BigInteger
/* 转换成BigInteger中的数,需要BigInteger.valueOf(); 加减乘除取余,不需要BigInteger.add()/subtract()/multiply()/divide()/A.mod(B),而是直接A.add(B)/A.subtract(B) java.math.*;还包括:A.compareTo(B),即A-B,如果A<B,则compareTo返回负值,如果A==B,则返回0,如果A>B,则返回正数 */
**BigDecimal** BigDecimal中的divide方法为: pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选! 其中: CEILING 向正无限大方向舍入的舍入模式。 DOWN 向零方向舍入的舍入模式。 FLOOR 向负无限大方向舍入的舍入模式。 HALF_DOWN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 HALF_EVEN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 HALF_UP 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 UNNECESSARY 用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。 UP 远离零方向舍入的舍入模式。 scale指的是你小数点后的位数。比如123.456则scale就是3. scale就是BigDecimal类中的方法。 b.scale();返回Bigdecimal中的小数点后的位数 你自己定义一个BigDecimal的对象调用一下就可以验证。 比如:BigDecimal b = new BigDecimal("123.456"); b.scale(),返回的就是3. roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,你可以看一下,有很多种。 比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。 BigDecimal中的valueOf(long x ,int scale)用法: 返回的是BigDecimal的 x/(10^scale)的值,也就是返回了一个BigDecimal形式的 x除以10的scale次方的值。 例如: package 第3章; import java.math.*; public class 第3章a { public static void main(String[] args) { Long b=new Long("123456789"); BigDecimal bg=BigDecimal.valueOf(b,3); System.out.println(bg); } } run: 123456.789
package 第3章; import java.math.*; import java.util.*; import java.math.RoundingMode; //注意: public class 第3章a { public static void main(String[] args) { BigDecimal a=BigDecimal.valueOf(100); BigDecimal b=BigDecimal.valueOf(3); a=a.divide(b,RoundingMode.HALF_UP); // 不能直接是HALF_UP,必须是RoundingMode.HALF_UP,就算import java.math.RoundingMode也必须有RoundingMode.HALF_UP System.out.println(a); } } int compareTo(); //(BigDecimal形式的A,如果不是,需要(BigDecimal.valueOf()).compareTo(BigDecimal.valueOf()B) static BigDecimal valueOf(long x); Long a=new Long("123124123123"); BigDecimal.valueOf(a); static BigDecimal valueOf(long x , int scale);
相关文章推荐
- 【java】BigDecimal、BigInteger、大数相乘、数值的整数次方、快速乘法
- Java核心技术知识点笔记—大数值BigInteger和BigDecimal
- Java基础语法<五> 大数值BigInteger BigDecimal
- JAVA大数处理(BigInteger,BigDecimal)
- Java300StudyNote(12)-Java浮点数以及浮点数误差问题、BigInteger、BigDecimal、float与long谁更大
- JAVA基础复习十四-Math、Random、System、BigInteger、BigDecimal、Date、SimpleDateFormat类
- java BigInteger,BigDecimal学习
- Java常用类库--Math、Random、NumberFormat、DecimalFormat、BigInteger、BigDecimal
- JAVA大数处理(BigInteger,BigDecimal)
- Java中BigDecimal 和 BigInteger 类型数据操作学习总结
- Java中的大数据:BigInteger和BigDecimal
- Java中BigInteger和BigDecimal详解
- Java基础之BigInteger,BigDecimal
- Java的两个高精度计算的类:BigInteger,BigDecimal
- BigInteger和BigDecimal大数值类的使用
- Java 表示超大型数据和浮点型计算不准确 BigInteger 和 BigDecimal 类介绍
- JAVA大数处理(BigInteger,BigDecimal)
- Java高新技术——大数操作(BigInteger、BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- java 中的大数据类型(BigInteger和BigDecimal)