Java 数字处理工具类
此文主要介绍 BigInteger BigDecimal DecimalFormat
BigIntegerL: 提供了对超过Integer数字范围进行处理的方法
BigDecimal: 在对浮点数进行计算的时候,float和double这两种数据类型常常丢失精度。
为了提升精度,Java提出了BigDecimal类。
DecimalFormat:对BigDecimal表示的浮点数进行格式化
代码示例:
package com.seven.javaSE; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; import java.text.DecimalFormat; public class NumberFormatDemo { public static void main(String[] args) { double aa = Math.PI; double PI = 3.1415926; /* * 对浮点数进行格式化,DecimalFormat */ //取一位整数 System.out.println(new DecimalFormat("0").format(PI)); //3 //取一位整数和两位小数 System.out.println(new DecimalFormat("0.00").format(PI)); //3.14 //取两位整数和3位小数,整数位不足就用0填充 System.out.println(new DecimalFormat("00.000").format(PI)); //03.141 //取所有整数部分 System.out.println(new DecimalFormat("#").format(PI)); //以百分比方式计数,并取两位小数 System.out.println(new DecimalFormat("#.##%").format(PI)); /* * 大整数进行(加、减、乘、除、求余)计算 */ BigInteger bi = new BigInteger("123456789"); BigInteger bi2 = new BigInteger("100000000"); System.out.println(bi.add(bi2)); System.out.println(bi.subtract(bi2)); System.out.println(bi.multiply(bi2)); System.out.println(bi.divide(bi2)); System.out.println(bi.remainder(bi2)); System.out.println("-------------------------------------------"); /* * 浮点数进行(加、减、乘、除、求余)计算 */ BigDecimal bd = new BigDecimal("12.3456789"); BigDecimal bd2 = new BigDecimal("1.00000001"); System.out.println(bd.add(bd2)); System.out.println(bd.subtract(bd2)); System.out.println(bd.multiply(bd2)); /* * 值得注意的是,使用devide()方法做浮点数除法,容易抛出java.lang.ArithmeticException的算数异常 * 这是因为出现了除不尽的情况,商是无限位的 * 这个时候可以在 divide() 方法中传入 MathContext 对象或 RoundingMode 对象,指定精度和舍入模式 * * 常量名 说明 CEILING 向正无限大方向舍入。 DOWN 向零方向舍入。 FLOOR 向负无限大方向舍入。 HALF_DOWN 向最接近数字方向舍入,如果与两个相邻数字的距离相等,则向下舍入。 HALF_EVEN 向最接近数字方向舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 HALF_UP 向最接近数字方向舍入,如果与两个相邻数字的距离相等,则向上舍入。 UNNECESSARY 断言具有精确结果。 */ System.out.println(bd.divide(bd2,RoundingMode.HALF_UP)); System.out.println(bd.remainder(bd2)); } }
本文来自博客园,作者:藤原豆腐渣渣,转载请注明原文链接:https://www.cnblogs.com/javafufeng/p/16345230.html