標籤:
一、BigDecimal
BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成。
如果為零或正數,則標度是小數點後的位元。
如果為負數,則將該數的非標度值乘以 10 的負 scale 次冪。
setScale(int n, roundingMode)方法
直接刪除多餘的小數位,如2.35會變成2.3 setScale(1,BigDecimal.ROUND_DOWN)
進位處理,2.35變成2.4 setScale(1,BigDecimal.ROUND_UP)
四捨五入,2.35變成2.4 setScale(1,BigDecimal.ROUND_HALF_UP)
四捨五入,2.35變成2.3,如果是5則向下舍setScaler(1,BigDecimal.ROUND_HALF_DOWN)
浮點數沒有辦法是用二進位進行精確表示
CPU表示浮點數由兩個部分組成:指數和尾數,這樣的表示方法一般都會失去一定的精確度,有些浮點數運算也會產生一定的誤差
java的float只能用來進行科學計算或工程計算,如果需要精確計算,非要用String來夠造BigDecimal不可
在大多數的商業計算中,一般採用java.math.BigDecimal類來進行精確計算
1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));2 BigDecimal b2 = BigDecimal.valueOf(0.48);
二、char, byte和Byte的區別
char 是字元資料類型 ,是無符號型的,佔2位元組(Unicode碼 ); 大小範圍 是0--65535; 可以表示一個整數,不能表示負數
char是一個16位二進位的Unicode字元,JAVA用char來表示一個字元
byte 是位元組資料類型 ,是有符號型的,佔1 個位元組;大小範圍為-128—127
1、char可以表中文字元,byte不可以
1 char e1 = ‘中‘, e2 = ‘國‘;2 byte f = (byte) ‘中‘; // 必須強制轉換否則報錯3 System.out.println(e1);4 System.out.println(e2);5 System.out.println(f); // 輸出45?
2、char、byte、int對於英文字元,可以相互轉化
1 byte g = ‘b‘; // b對應ASCII是982 char h = (char) g;3 char i = 85; // U對應ASCII是854 int j = ‘h‘; // h對應ASCII是1045 System.out.println(g); //986 System.out.println(h); //b7 System.out.println(i); //U8 System.out.println(j); //104
Java 和Oracle的資料類型