【JAVA零基礎入門系列】(已完結)導航目錄html
什麼是大數值?用腳趾頭想也知道,固然是「大」的數值(233)。Java中有兩個用於表示大數值的類,BigInteger和BigDecimal,那到底能表示多大的數值呢?理論上,能夠表示任意長度,任意精度,想要多大,就能有多大。java
爲何要用大數值?理由很簡單,當整數跟浮點數的精度不能知足要求時,就須要用更大或者精度更高的類型,這時候大數值就應運而生了。程序員
short的取值範圍爲-32768~32767,佔用2個字節(-2的15次方到2的15次方-1)。數組
int的取值範圍爲(-2147483648~2147483647),佔用4個字節(-2的31次方到2的31次方-1) ide
long的取值範圍爲(-9223372036854774808~9223372036854774807),佔用8個字節(-2的63次方到2的63次方-1)post
float的取值範圍爲3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,一樣,e-45表示乘以10的負45次方)佔用4個字節 spa
double的取值範圍爲1.797693e+308~ 4.9000000e-324 佔用8個字節 code
無論是整數型仍是浮點型,它們的表示範圍和精度都是有限的,因此有時候沒法知足要求或者要求高精度計算時,就須要用到大數值了。先來看一個栗子。htm
public class Test{ public static void main(String[] args) { double result = 2.0-1.1; System.out.println(result); } }
你猜,結果是什麼?對象
驚不驚喜?意不意外?你也許會以爲,WTF?!!不是0.9嗎?可事實上,因爲浮點數的存儲及運算規則上的規定,就出現了上圖結果。事實上,浮點型沒法精確的表示1.1的小數部分。那究竟是爲何呢?
此處省略一萬字。。。
這樣的不精確,在須要嚴格結果的狀況時是不容許出現的,這時,咱們就須要用到大數值了。改寫後以下:
import java.math.BigDecimal; public class Test{ public static void main(String[] args) { BigDecimal result = BigDecimal.valueOf(2.0).subtract(BigDecimal.valueOf(1.1)); System.out.println(result); } }
如今就能獲得咱們想要的結果了。
大數值運算跟普通運算不同,因爲Java裏的大數值沒有重載運算符操做,也沒有賦予程序員這樣的權力,因此只能經過調用方法的方式進行計算。
+——add();
System.out.println(BigInteger.valueOf(10).add(BigInteger.valueOf(5)));
- ——subtract();
System.out.println(BigInteger.valueOf(10).subtract(BigInteger.valueOf(5)));
*——multiply();
System.out.println(BigInteger.valueOf(10).multiply(BigInteger.valueOf(5)));
/——divide();
System.out.println(BigInteger.valueOf(10).divide(BigInteger.valueOf(5)));
%——mod();取餘數
System.out.println(BigInteger.valueOf(10).mod(BigInteger.valueOf(5)));
比較——compareTo();大於則返回正數,小於則返回負數,等於返回0.
System.out.println(BigInteger.valueOf(10).compareTo(BigInteger.valueOf(5)))
靜態方法valueOf()用於將整數浮點數轉化成大數值對象。
大數值的內容其實並很少,以後多加練習便能熟練掌握。
至此,本篇內容結束,歡迎繼續關注!