NotOnlyJava

http://www.ibm.com/developerworks/cn/java/j-lo-serial/
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java高效的获取指定的精度的double数

Posted on 2013-01-17 22:00  NotOnlyJava  阅读(654)  评论(1编辑  收藏  举报
 1 package com.czp;
 2 
 3 
 4 public class MathUtil {
 5 
 6     public static void main(String[] args){
 7         double d = 123.5465893;
 8         System.out.println(getRealVaule(d, 0));
 9         //=>124
10         System.out.println(getRealVaule(d, 3));
11         //=>123.547
12 
13     }
14     /**
15      * 对结果进行四舍五入
16      * 
17      * @param value  :原始数
18      * @param resLen :所要的精度
19      * @return
20      */
21     public static   Number getRealVaule(double value,int resLen) {
22         if(resLen==0)
23             //原理:123.456*10=1234.56+5=1239.56/10=123
24             //原理:123.556*10=1235.56+5=1240.56/10=124
25             return Math.round(value*10+5)/10;
26         double db  = Math.pow(10, resLen);
27         return Math.round(value*db)/db;
28     }
29 }