2012年9月4日 星期二

BigDecimal 四捨五入

試寫個波浪理論的運算時發現,
使用倍精數型態(double)運算後取四捨五入的結果不是預想的那樣精確…

仔細查詢後發現了「BigDecimal」的用法,
使用它能夠正常顯示出想要的數值。
因為是計算與「錢」有點關聯的數值,
所以精確些對我來說會比較好!

但要怎麼使用還是得記錄一下。

首先要匯入相關的函式進來:
import java.math.BigDecimal;


再來是對想要進行四捨五入的值進行輸出,
不過怪的事是要取得預想的四捨五入數值不是使用數值直接輸出,
而是先轉「字串」後再輸出………

double doubleOfNum = 65.125;   //設定倍精數值
String stringOfNum = Double.toString(doubleOfNum);   //先轉成字串

System.out.println(doubleOfNum + "四捨五入後是:" + new BigDecimal(stringOfNum).setScale(2, BigDecimal.ROUND_HALF_UP));   
//主要用 BigDecimal(字串).setScale(至小數第幾位, BigDecimal.ROUND_HALF_UP)
/**
     倍精數(double)四捨五入方法
*/

import java.math.BigDecimal;

public class doubleBigDecimal
{
     public static void main(String[] args)
     {
          double doubleNum = 20.125;
          String stringNum = Double.toString(doubleNum);
   
          System.out.println(doubleNum + " 四捨五入後的數值 = " + new BigDecimal(stringNum).setScale(2,BigDecimal.ROUND_HALF_UP));
}

沒有留言:

張貼留言