[Java]實作小數點取到第二位與數字取到千分位

Boom
Mar 26, 2023

--

🎃 許多網頁都會需要呈現小數點取到第二位或是數字需要取到千分位等等,像是如果有在投資股票,那有可能會到公開資訊觀測站來看財報的一些金額、成長比率等

圖片來源:公開資訊觀測站

或是最近很夯的電商,假設我要買PS5,電商網頁也會將金額去做千分位的顯示

圖片來源:MOMO購物

我們也可以透過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 ⭐️ 程式自學之旅 謝謝~🙌

--

--

Boom
Boom

Written by Boom

Boom Engineer | BOOM ⭐ 程式自學之旅 | 透過筆記釋放記憶體,記錄自己的程式筆記,『內化』成為這段旅程的養分,也分享給路過,正在經歷這趟旅程的你 | Java note begin at 2020.09 | Python note begin at 2021.03

No responses yet