1. 程式人生 > 其它 >Java 數字處理工具類

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)); } }