limq

rainman
随笔 - 19, 文章 - 2, 评论 - 115, 引用 - 1
数据加载中……

四舍五入保留小数后两位

 

 1 /**
 2  * Contains static utility methods.
 3  */
 4 public class BOUtils {
 5 
 6  public static Double getRoundedDouble( double unroundedValue ){
 7     // Get the integer portion of the value
 8     double intPortion = Math.floor( unroundedValue );
 9 
10     // Get the unrounded decimal portion
11     double unroundedDecimalPortion = ( unroundedValue - intPortion );
12 
13     /* ALERT - This next code interferes with I18N. We eventually need   */
14     /*         to change this not assume only round to 2 decimal places. */
15 
16     /* Multiply the decimal places by 100, which shitfs the decimal point
17     /* two places to the left. Then round it so that we get a round to
18     /* two decimal places. For example, if we started with 17.655 and stripped
19     /* off the int portion, which left .655. After we shift, we are left with
20     /* 65.5. Then a round will gives us 66. We can then put it all back
21     /* together */
22     double roundedDecimalPortion = Math.round( unroundedDecimalPortion * 100 );
23 
24     // Shift the decimal point back two places to the right
25     roundedDecimalPortion = roundedDecimalPortion / 100;
26 
27     // Add the int portion and decimal portions back together
28     double total = intPortion + roundedDecimalPortion;
29 
30     return new Double( total );
31   }
32 }

posted on 2005-09-21 23:59 limq 阅读(7682) 评论(2)  编辑  收藏 所属分类: 编程技巧

评论

# re: 四舍五入保留小数后两位  回复  更多评论   

new DecimalFormat("0.00").format(*******);
这样也可以,你那种太麻烦。
2005-11-19 14:26 | 网络幽灵

# re: 四舍五入保留小数后两位  回复  更多评论   

是呀,在创建的时候,用数字的字符串形式创建,就可以了

new BigDecimal("99.115").setScale(2, BigDecimal.ROUND_HARF_UP);
2006-11-01 16:48 | Toez

只有注册用户登录后才能发表评论。


网站导航: