第一版

java.math.RoundingMode
几个参数详解

java.math.RoundingMode里面有几个参数搞得我有点晕,现以个人理解对其一一进行总结:

为了能更好理解,我们可以画一个XY轴

RoundingMode.CEILING:取右边最近的整数

RoundingMode.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整

RoundingMode.FLOOR:取左边最近的正数

RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数

RoundingMode.HALF_UP:四舍五入,负数原理同上

RoundingMode.HALF_EVEN:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入

第二版

roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,   

  有:   

    一下例子是setScale(0,BigDecimal.ROUND_XXXX_XXX));的情况。如果保留小数位数不是零,如

setScale(2,BigDecimal.ROUND_XXXX_XXX)); 是 2 ,则 此数字的小数位数要大于2位。第三位才是要取舍得位。

  ROUND_CEILING:   舍位时往正无穷方向移动   1.1->2   1.5->2   1.8->2   -1.1->-1   -1.5->-1   -1.8->-1   

  ROUND_DOWN:向0的方向移动1.1->1   1.5->1   1.8->1   -1.1->-1   -1.5->-1   -1.8>-1   

  ROUND_FLOOR:与CEILING相反,往负无穷   1.1->1   1.5->1   1.8->1   -1.1->-2   -1.5->-2   -1.8->-2   

  ROUND_HALF_DOWN:以5为分界线,或曰五舍六入1.5->1   1.6->1   -1.5->-1   -1.6->-2 1.15->1.1   1.16->1.2 1.55->1.6  1.56->1.6

  ROUND_HALF_EVEN:同样以5为分界线,如果是5,则前一位变偶数1.15->1.2   1.16->1.2   1.25->1.2   1.26->1.3   

  ROUND_HALF_UP:最常见的四舍五入   

  ROUND_UNNECESSARY:无需舍位   

  ROUND_UP:与ROUND_DOWN,远离0的方向1.1->2   1.5->2   1.8->2   -1.1->-2   -1.5->-2   -1.8->-2   

    

  具体精确到几位因该采用   

  商=被除数.devide(除数,保留小数位数,精确方法)

第三版

BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

可以处理任意长度的浮点数运算。 

BigDecimal add(BigDecimal val) //BigDecimal 加法 

BigDecimal subtract (BigDecimal val) //BigDecimal 减法 

BigDecimal multiply (BigDecimal val)  //BigDecimal 乘法 

BigDecimal divide (BigDecimal val,RoundingMode mode)  除法 

具体使用 计算: 

   
  加:   a.add(b); 

  减: a.subtract(b); 

  乘:   a.multiply(b); 

  除:   a.divide(b,2);//2为精度取值 
除法细解: 
  //注意以下相除会抛出异常,原因: 通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常  
        //BigDecimal divideBg = a.divide(b);   
        //解决方法是:设置精确度;就是给divide设置精确的小数点 
divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)   
        //其中的第二个参数表示的是:保留小数点之后多少位  

BigDecimal不整除抛出的异常,请设置精确度! 
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
at java.math.BigDecimal.divide(BigDecimal.java:1278) 
at main.Main.main(Main.java:41) 

下面我们来看看除法的详细说明: 
   divide(BigDecimal divisor, int scale, introundingMode) 

BigDecimal的setScale方法 

BigDecimal.setScale() 

方法用于格式化小数点 

表示保留一位小数,默认用四舍五入方式 

setScale(1) 

直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_DOWN) 

进位处理,2.35变成2.4  setScale(1,BigDecimal.ROUND_UP) 

四舍五入,2.35变成2.4  setScale(1,BigDecimal.ROUND_HALF_UP) 

四舍五入,2.35变成2.3,如果是5则向下舍setScaler(1,BigDecimal.ROUND_HALF_DOWN) 

  
注意点一 

scale指的是你小数点后的位数。 
scale()就是BigDecimal类中的方法。如 

BigDecimal b = new BigDecimal("123.456"); 

b.scale()返回的就是3 
注意点二roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段, 

有很多种,如 
BigDecimal.ROUND_HALF_UP表示的就是4舍5入 

注意点三 

divide(BigDecimal divisor, int scale, introundingMode)的意思是说: 
我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的 

BigDecimal aa = new  BigDecimal(135.95 );  

BigDecimal bb=new  BigDecimal("100" );  

BigDecimal result=aa.multiply(bb);  //做加法 

3.java中 BigDecimal类型的可以转换到double类型: 
  用 变量.doubleValue();函数  即可将 BigDecimal 类型数据 转化为 double类型! 
4.java BigDecimal比较大小 

可以通过BigDecimal的compareTo方法来进行比较。 
返回的结果是int类型,-1表示小于,0是等于,1是大于。 

看下面这个例子: 
BigDecimal a = new BigDecimal("1.00"); 
BigDecmial b = new BigDecimal(1); 

想比较一下a和b的大小,一般都会用equals 

System.out.println(a.equals(b)); 
但是输出结果是:false 
原因是:BigDecimal比较时,不仅比较值,而且还比较精度? 

if(a.compareTo(b)==0) 结果是true 

比较大小可以用 a.compareTo(b) 
返回值    -1 小于   0 等于    1 大于 

5.BigDecimal取其中最大、最小值、绝对值、相反数: 

  a.max (b) //比较取最大值 

  a.min(b) //比较取最小值 

  a.abs()//取最绝对值 

  a.negate()//取相反数 

6.下面是注意 : 

BigDecimal枚举常量用法摘要  : 

CEILING   
          向正无限大方向舍入的舍入模式。 
DOWN   
          向零方向舍入的舍入模式。 
FLOOR   
          向负无限大方向舍入的舍入模式。 
HALF_DOWN   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 
HALF_EVEN   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 
HALF_UP   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 
UNNECESSARY   
          用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。 
UP   
          远离零方向舍入的舍入模式。 

7.关于BigDecimal格式化 

public String formatValue(Object value){ 
        String content = null; 
        if (value == null) { 
             content = ""; 
         } else { 
             if(value instanceof BigDecimal){ 
                 //conver to fortmat String 
                 NumberFormat nf = NumberFormat.getInstance(); 
                 nf.setMinimumFractionDigits(2); 
                 nf.setMaximumFractionDigits(2); 
                 content = nf.format(value);  
             }else{ 
                 content = String.valueOf(value); 
             } 
         } 
        return content; 
    } 

使用这样一个方法可以达到格式化的效果,其中value instanceof BigDecimal,表示的是字符类型是BigDecimal类型的时候执行,这里的NumberFormat就表示字符类型,下面的两句代码就表示小数点后面的精确位数。 

这里还要提到NumberFormat的其他两个类型: 

getCurrencyInstance(): 返回当前默认 环境的货币格式 

CurrencyInstance(): 返回指定语言 环境的数字格式,一般是百分比格式 

8.在《Effective Java》这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。 
我们如果需要精确计算,非要用String来够造BigDecimal不可! 

下面的这个工具类是是转载别人的,可以通过个工具类实现小数的精确计算。 

1import java.math.BigDecimal;   
2/** *//**  
3* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精  
4* 确的浮点数运算,包括加减乘除和四舍五入。  
5*/  
6public class Arith{   
7    //默认除法运算精度   
8    private static final int DEF_DIV_SCALE = 10;   
9    //这个类不能实例化   
10    private Arith(){   
11    }   
12  
13    /** *//**  
14     * 提供精确的加法运算。  
15     * @param v1 被加数  
16     * @param v2 加数  
17     * @return 两个参数的和  
18     */  
19    public static double add(double v1,double v2){   
20        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
21        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
22        return b1.add(b2).doubleValue();   
23    }   
24    /** *//**  
25     * 提供精确的减法运算。  
26     * @param v1 被减数  
27     * @param v2 减数  
28     * @return 两个参数的差  
29     */  
30    public static double sub(double v1,double v2){   
31        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
32        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
33        return b1.subtract(b2).doubleValue();   
34    }    
35    /** *//**  
36     * 提供精确的乘法运算。  
37     * @param v1 被乘数  
38     * @param v2 乘数  
39     * @return 两个参数的积  
40     */  
41    public static double mul(double v1,double v2){   
42        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
43        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
44        return b1.multiply(b2).doubleValue();   
45    }   
46  
47    /** *//**  
48     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到  
49     * 小数点以后10位,以后的数字四舍五入。  
50     * @param v1 被除数  
51     * @param v2 除数  
52     * @return 两个参数的商  
53     */  
54    public static double div(double v1,double v2){   
55        return div(v1,v2,DEF_DIV_SCALE);   
56    }   
57  
58    /** *//**  
59     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指  
60     * 定精度,以后的数字四舍五入。  
61     * @param v1 被除数  
62     * @param v2 除数  
63     * @param scale 表示表示需要精确到小数点以后几位。  
64     * @return 两个参数的商  
65     */  
66    public static double div(double v1,double v2,int scale){   
67        if(scale<0){   
68            throw new IllegalArgumentException(   
69                "The scale must be a positive integer or zero");   
70        }   
71        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
72        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
73        return b1.divid(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
74    }   
75  
76    /** *//**  
77     * 提供精确的小数位四舍五入处理。  
78     * @param v 需要四舍五入的数字  
79     * @param scale 小数点后保留几位  
80     * @return 四舍五入后的结果  
81     */  
82    public static double round(double v,int scale){   
83        if(scale<0){   
84            throw new IllegalArgumentException(   
85                "The scale must be a positive integer or zero");   
86        }   
87        BigDecimal b = new BigDecimal(Double.toString(v));   
88        BigDecimal one = new BigDecimal("1");   
89        return b.divid(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
90     }   
91  }  BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负
scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。 
可以处理任意长度的浮点数运算。 

BigDecimal add(BigDecimal val) //BigDecimal 加法 

BigDecimal subtract (BigDecimal val) //BigDecimal 减法 

BigDecimal multiply (BigDecimal val)  //BigDecimal 乘法 

BigDecimal divide (BigDecimal val,RoundingMode mode)  除法 

具体使用 计算: 

   
  加:   a.add(b); 

  减: a.subtract(b); 

  乘:   a.multiply(b); 

  除:   a.divide(b,2);//2为精度取值 
除法细解: 
  //注意以下相除会抛出异常,原因: 通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常  
        //BigDecimal divideBg = a.divide(b);   
        //解决方法是:设置精确度;就是给divide设置精确的小数点 
divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)   
        //其中的第二个参数表示的是:保留小数点之后多少位  

BigDecimal不整除抛出的异常,请设置精确度! 
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
at java.math.BigDecimal.divide(BigDecimal.java:1278) 
at main.Main.main(Main.java:41) 

下面我们来看看除法的详细说明: 
   divide(BigDecimal divisor, int scale, introundingMode) 

BigDecimal的setScale方法 

BigDecimal.setScale() 

方法用于格式化小数点 

表示保留一位小数,默认用四舍五入方式 

setScale(1) 

直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_DOWN) 

进位处理,2.35变成2.4  setScale(1,BigDecimal.ROUND_UP) 

四舍五入,2.35变成2.4  setScale(1,BigDecimal.ROUND_HALF_UP) 

四舍五入,2.35变成2.3,如果是5则向下舍setScaler(1,BigDecimal.ROUND_HALF_DOWN) 

  
注意点一 

scale指的是你小数点后的位数。 
scale()就是BigDecimal类中的方法。如 

BigDecimal b = new BigDecimal("123.456"); 

b.scale()返回的就是3 
注意点二roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段, 

有很多种,如 
BigDecimal.ROUND_HALF_UP表示的就是4舍5入 

注意点三 

divide(BigDecimal divisor, int scale, introundingMode)的意思是说: 
我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的 

BigDecimal aa = new  BigDecimal(135.95 );  

BigDecimal bb=new  BigDecimal("100" );  

BigDecimal result=aa.multiply(bb);  //做加法 

3.java中 BigDecimal类型的可以转换到double类型: 
  用 变量.doubleValue();函数  即可将 BigDecimal 类型数据 转化为 double类型! 
4.java BigDecimal比较大小 

可以通过BigDecimal的compareTo方法来进行比较。 
返回的结果是int类型,-1表示小于,0是等于,1是大于。 

看下面这个例子: 
BigDecimal a = new BigDecimal("1.00"); 
BigDecmial b = new BigDecimal(1); 

想比较一下a和b的大小,一般都会用equals 

System.out.println(a.equals(b)); 
但是输出结果是:false 
原因是:BigDecimal比较时,不仅比较值,而且还比较精度? 

if(a.compareTo(b)==0) 结果是true 

比较大小可以用 a.compareTo(b) 
返回值    -1 小于   0 等于    1 大于 

5.BigDecimal取其中最大、最小值、绝对值、相反数: 

  a.max (b) //比较取最大值 

  a.min(b) //比较取最小值 

  a.abs()//取最绝对值 

  a.negate()//取相反数 

6.下面是注意 : 

BigDecimal枚举常量用法摘要  : 

CEILING   
          向正无限大方向舍入的舍入模式。 
DOWN   
          向零方向舍入的舍入模式。 
FLOOR   
          向负无限大方向舍入的舍入模式。 
HALF_DOWN   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 
HALF_EVEN   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 
HALF_UP   
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 
UNNECESSARY   
          用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。 
UP   
          远离零方向舍入的舍入模式。 

7.关于BigDecimal格式化 

public String formatValue(Object value){ 
        String content = null; 
        if (value == null) { 
             content = ""; 
         } else { 
             if(value instanceof BigDecimal){ 
                 //conver to fortmat String 
                 NumberFormat nf = NumberFormat.getInstance(); 
                 nf.setMinimumFractionDigits(2); 
                 nf.setMaximumFractionDigits(2); 
                 content = nf.format(value);  
             }else{ 
                 content = String.valueOf(value); 
             } 
         } 
        return content; 
    } 

使用这样一个方法可以达到格式化的效果,其中value instanceof BigDecimal,表示的是字符类型是BigDecimal类型的时候执行,这里的NumberFormat就表示字符类型,下面的两句代码就表示小数点后面的精确位数。 

这里还要提到NumberFormat的其他两个类型: 

getCurrencyInstance(): 返回当前默认 环境的货币格式 

CurrencyInstance(): 返回指定语言 环境的数字格式,一般是百分比格式 

8.在《Effective Java》这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。 
我们如果需要精确计算,非要用String来够造BigDecimal不可! 

下面的这个工具类是是转载别人的,可以通过个工具类实现小数的精确计算。 

1import java.math.BigDecimal;   
2/** *//**  
3* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精  
4* 确的浮点数运算,包括加减乘除和四舍五入。  
5*/  
6public class Arith{   
7    //默认除法运算精度   
8    private static final int DEF_DIV_SCALE = 10;   
9    //这个类不能实例化   
10    private Arith(){   
11    }   
12  
13    /** *//**  
14     * 提供精确的加法运算。  
15     * @param v1 被加数  
16     * @param v2 加数  
17     * @return 两个参数的和  
18     */  
19    public static double add(double v1,double v2){   
20        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
21        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
22        return b1.add(b2).doubleValue();   
23    }   
24    /** *//**  
25     * 提供精确的减法运算。  
26     * @param v1 被减数  
27     * @param v2 减数  
28     * @return 两个参数的差  
29     */  
30    public static double sub(double v1,double v2){   
31        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
32        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
33        return b1.subtract(b2).doubleValue();   
34    }    
35    /** *//**  
36     * 提供精确的乘法运算。  
37     * @param v1 被乘数  
38     * @param v2 乘数  
39     * @return 两个参数的积  
40     */  
41    public static double mul(double v1,double v2){   
42        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
43        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
44        return b1.multiply(b2).doubleValue();   
45    }   
46  
47    /** *//**  
48     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到  
49     * 小数点以后10位,以后的数字四舍五入。  
50     * @param v1 被除数  
51     * @param v2 除数  
52     * @return 两个参数的商  
53     */  
54    public static double div(double v1,double v2){   
55        return div(v1,v2,DEF_DIV_SCALE);   
56    }   
57  
58    /** *//**  
59     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指  
60     * 定精度,以后的数字四舍五入。  
61     * @param v1 被除数  
62     * @param v2 除数  
63     * @param scale 表示表示需要精确到小数点以后几位。  
64     * @return 两个参数的商  
65     */  
66    public static double div(double v1,double v2,int scale){   
67        if(scale<0){   
68            throw new IllegalArgumentException(   
69                "The scale must be a positive integer or zero");   
70        }   
71        BigDecimal b1 = new BigDecimal(Double.toString(v1));   
72        BigDecimal b2 = new BigDecimal(Double.toString(v2));   
73        return b1.divid(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
74    }   
75  
76    /** *//**  
77     * 提供精确的小数位四舍五入处理。  
78     * @param v 需要四舍五入的数字  
79     * @param scale 小数点后保留几位  
80     * @return 四舍五入后的结果  
81     */  
82    public static double round(double v,int scale){   
83        if(scale<0){   
84            throw new IllegalArgumentException(   
85                "The scale must be a positive integer or zero");   
86        }   
87        BigDecimal b = new BigDecimal(Double.toString(v));   
88        BigDecimal one = new BigDecimal("1");   
89        return b.divid(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
90     }   
91  }  

RoundingMode 几个参数详解的更多相关文章

  1. java.math.RoundingMode 几个参数详解

    java.math.RoundingMode里面有几个参数搞得我有点晕,现以个人理解对其一一进行总结: 为了能更好理解,我们可以画一个XY轴 RoundingMode.CEILING:取右边最近的整数 ...

  2. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  3. iptables参数详解

    iptables参数详解 搬运工:尹正杰 注:此片文章来源于linux社区. Iptalbes 是用来设置.维护和检查Linux内核的IP包过滤规则的. 可以定义不同的表,每个表都包含几个内部的链,也 ...

  4. chattr的常用参数详解

    chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...

  5. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  6. $.ajax()方法所有参数详解;$.get(),$.post(),$.getJSON(),$.ajax()详解

    [一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注 ...

  7. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  8. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

  9. HTML滚动字幕代码参数详解及Js间隔滚动代码

    html文字滚动代码 <marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" dire ...

随机推荐

  1. 简单的横向ListView实现(version 4.0)

    这个版本号的博客写起来颇费口舌.有些代码自己语言组织能力有限,感觉描写叙述起来非常费劲,前前后后改了五六遍稿子还是不尽人意 ,只是我还是坚持写出来自己当初的思路,假设看得不明确的地方我在文章最后仍然会 ...

  2. OC文件操作、获取文件属性

    #import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autorel ...

  3. eclipse- log 打印跟输出到文件

    1.在eclipse中打印log,经常使用的就是log.e(string,string) 代码中如下 @Override public boolean onTouchEvent(MotionEvent ...

  4. ADO.net简单增删改查

    嘿嘿,又到了总结了的时间,今天我们学习了ADO.net,什么是ADO.NET:ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, Sys ...

  5. [D3] Animate Transitions in D3 v4

    D3 makes it easy to add meaningful animations to your data visualizations. Whether it’s fading in ne ...

  6. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)

    题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...

  7. Des 加密cbc模式 padding

    using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...

  8. libjpeg用法

    libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码.JPEG编码和其他的JPEG功能的实现.这个库由独立JPEG工作组维护.最新版本号是6b,于1998年发布.可以参考维基百科关 ...

  9. 9.2 Binder系统_驱动情景分析_服务注册过程

    1. 几个重要结构体的引入给test_server添加一个goodbye服务, 由此引入以下概念: 进程间通信其实质也是需要三要素:源.目的.数据,源是自己,目的用handle表示:通讯的过程是源向实 ...

  10. 3、在编译过程中出现no space left on device

    原因:通过df -h查看发现磁盘空间不错  删掉不需要的文件后执行sudo apt-get clean