BigDecimal 运用示例 与 DecimalFormat
生活随笔
收集整理的這篇文章主要介紹了
BigDecimal 运用示例 与 DecimalFormat
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼:
BigDecimal bd = new BigDecimal( "99.11" );System.out.println( "scale=" + bd.scale() );System.out.println(bd);bd = new BigDecimal( 5526 );bd = bd.divide( new BigDecimal (1000) );System.out.println( "scale=" + bd.scale() );System.out.println(bd);System.out.println( "doubleValue=" + bd.doubleValue());bd = new BigDecimal( 23.256 );System.out.println( "--scale=" + bd.scale() );System.out.println(bd);System.out.println( "--doubleValue=" + bd.doubleValue());運行結果:結論:
1、如果傳入的是字符串,則會自動計算“標度”,直接輸出的字符串也是“精確的”
2、如果傳入的是整數,且除以10 的 N 次冪,結果依然精確(即使是轉換成 double)
3、如果傳入的是 double,BigDecimal 內部保存的“標度”為45,轉換回double 時原樣輸出。
設置精度( scale ) 和舍入方式:
static void testScale(){BigDecimal bd = new BigDecimal( 23/7.0 );System.out.println( "Before:" + bd.doubleValue() );double d = bd.setScale( 2, BigDecimal.ROUND_HALF_UP ).doubleValue();System.out.println( "After:" + d );}輸出: Before:3.2857142857142856 After:3.29注意:setScale( ) 方法會返回一個BigDecimal ,要對這個對象操作才有效。這是一個“ Value-Object”,每次操作返回一個新對象。對沒法精確表示的(除法),拋出異常
bd = new BigDecimal( 2655 );bd = bd.divide( new BigDecimal (122) );System.out.println( "scale=" + bd.scale() );System.out.println(bd);System.out.println( "doubleValue=" + bd.doubleValue());DecimalFormat 格式化數字
示例
// . . . String formatNumber( BigDecimal number ){DecimalFormat decimalFormat = new DecimalFormat( "##.##" );decimalFormat.setMinimumFractionDigits( 2 );decimalFormat.setMaximumFractionDigits( 2 );String numberStr = decimalFormat.format( number );// 長度不夠,補前導空格(如 "1.22" 應為 " 1.22")final int FORMAT_STRING_LENGTH = 5;if( numberStr.length() < FORMAT_STRING_LENGTH ){numberStr = addPreBlank( numberStr, FORMAT_STRING_LENGTH );}return numberStr;}String addPreBlank( String str, int formatLength ){assert str != null;assert !str.trim().equals("");assert str.length() < formatLength;final String ONE_BLANK = " ";int sub = formatLength - str.length();StringBuilder sb = new StringBuilder();for( int i = 0 ; i < sub ; i++ ){sb.append( ONE_BLANK );}return sb.toString() + str;}總結
以上是生活随笔為你收集整理的BigDecimal 运用示例 与 DecimalFormat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重构--思维导图
- 下一篇: 开放-封闭原则(OCP)