码迷,mamicode.com
首页 > 其他好文 > 详细

float 与 double

时间:2015-07-14 09:54:40      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

* java当中默认声明的小数是double类型的;

 * double d=4.0

 * 如果声明:

float x=4.0;

 

 * float x = 4.0则会报错,需要如下写法:

float x  = 4.0f;//其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义
float x1 =(float)4.0;


folat 与 double 区别:

 * float 内存分配4个字节,占32位,有效小数位6-7位

 * double 型 内存分配8个字节,有效小数位15位

 

 *  在《Effective Java》这本书中也提到这个原则: float和double只能用来做科学计算或者是工程计算; 在商业计算中我们要用java.math.BigDecimal。

 

使用java.math.BigDecimal类进行计算:

/** 
 * 提供精确的数学运算。 
 * @param v1 被(加数,减数,除数、、) 
 * @param v2 加数 ,减数、、、
 * @return 两个参数的(和,除,乘积,差) 
 */  
//加法
 public static double add(double v1,double v2)  
 {  
     BigDecimal b1 = new BigDecimal(Double.toString(v1));  
     BigDecimal b2 = new BigDecimal(Double.toString(v2));  
     return b1.add(b2).doubleValue();  
 }  
//减法
  public static double sub(double v1,double v2){  
     BigDecimal b1 = new BigDecimal(Double.toString(v1));  
     BigDecimal b2 = new BigDecimal(Double.toString(v2));  
     return b1.subtract(b2).doubleValue();  
 } 
//乘法
 public static double mul(double v1,double v2) {  
     BigDecimal b1 = new BigDecimal(Double.toString(v1));  
     BigDecimal b2 = new BigDecimal(Double.toString(v2));  
     return b1.multiply(b2).doubleValue();  
 } 
/* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 
 * 定精度,以后的数字四舍五入。 
 * @param scale 表示表示需要精确到小数点以后几位。
 */
 public static double div(double v1,double v2,int scale){  
     if(scale<0){  
         throw new IllegalArgumentException("The scale must be a positive integer or zero");  
     }  
     BigDecimal b1 = new BigDecimal(Double.toString(v1));  
     BigDecimal b2 = new BigDecimal(Double.toString(v2));  
     return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();  
 }  


 

提供精确的小数位四舍五入处理:

/** 
 * 提供精确的小数位四舍五入处理。 
 * @param v 需要四舍五入的数字 
 * @param scale 小数点后保留几位 
 * @return 四舍五入后的结果 
 */  
 public static double round(double v,int scale) {  
     if(scale<0){  
         throw new IllegalArgumentException("The scale must be a positive integer or zero");  
     }  
     BigDecimal b = new BigDecimal(Double.toString(v));  
     BigDecimal one = new BigDecimal("1");  
     return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();  
 } 

 

float 与 double

标签:

原文地址:http://www.cnblogs.com/wss2881938/p/4644565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!