我們也可以透過Java實作小數點取到第二位以及千分位的功能,可以參考以下程式
1.小數點取到第二位
import java.math.BigDecimal;
import java.math.RoundingMode;
class scale{
public static void main (String arg[]){
//setScale 實現小數點取到第二位
BigDecimal numaber1 = new BigDecimal(“12.3999999”);
numaber1 = numaber1.setScale(2, RoundingMode.HALF_UP);//四捨五入
System.out.println(numaber1); // output:123.40
}
}
這邊需要使用到兩個類別,都是屬於Java.math的BigDecimal與RoundingMode類別
我們可以去查詢Java8的函示庫去查詢他的用法,基本上會使用BigDecimal用在需要比較精準的計算(如金額、比率等等)
BigDecimal算是Java的一種類別,在java.math套件中,可以用來表示十進字數字,但要特別注意它與基本數據類型int與double不一樣,需要以物件的方式進行加減乘除等計算。
BigDecimal number = new BigDecimal("123123.123123");
取到小數點第二位就需要使用setScale的方法去實作
需輸入兩個參數:取到的小數第【幾】位,四捨五入的方式
java.math.BigDecimal.setScale(int newScale,RoundingMode roundingMode)
而這次我是使用RoundingMode.HALF_UP的方式,也就是四捨五入
numaber1 = numaber1.setScale(2, RoundingMode.HALF_UP);//四捨五入
RoundingMode共有以下幾種可以參考
RoundingMode.UP
:向正無限大方向進行捨入。RoundingMode.DOWN
:向零方向進行捨入。RoundingMode.CEILING
:向正無限大方向進行捨入,如果是正數則行為和RoundingMode.UP
一樣,如果是負數則行為和RoundingMode.DOWN
一樣。RoundingMode.FLOOR
:向負無限大方向進行捨入,如果是正數則行為和RoundingMode.DOWN
一樣,如果是負數則行為和RoundingMode.UP
一樣。RoundingMode.HALF_UP
:四捨五入,如果處理的數值恰好在兩個相鄰的數值中間時,則會向上進行捨入。RoundingMode.HALF_DOWN
:四捨五入,如果處理的數值恰好在兩個相鄰的數值中間時,則會向下進行捨入。RoundingMode.HALF_EVEN
:四捨五入,如果處理的數值恰好在兩個相鄰的數值中間時,則會向最接近的偶數進行捨入。RoundingMode.UNNECESSARY
:如果進行捨入操作是不必要的,則會拋出ArithmeticException
異常。
2.千分位
千分位可以使用java.text.DecimalFormat;這個方法實作
"#,###.##" //#表示數字 ,表示千分位 .後有兩個數字表示保留兩位小數
import java.text.DecimalFormat;
class scale{
public static void main (String arg[]){
//實現千分位
Double number2 = 12345.6789;
DecimalFormat df = new DecimalFormat("#,###.##");
System.out.println(df.format(number2));//12,345.68
}
}
謝謝你的閱讀:)
如果你喜歡我的分享
歡迎底下留言或來信至boomengineerli@gmail.com 與我分享
期待與更多優秀的夥伴交流😄------------------------------------------------
如果願意給我一些小小鼓勵,請給我1-10個拍手
如果覺得文章對你有點幫助,請給我11-20個拍手
如果想看更多程式的相關文章,請長按拍手按鈕(50個拍爆)讓我知道唷👏
最後,如希望持續追蹤我的最新文章,請不要忘記追蹤 Boom ⭐️ 程式自學之旅 謝謝~🙌