码迷,mamicode.com
首页 > 编程语言 > 详细

java中数字加减乘除乱象(尤其是double类型)

时间:2015-08-19 13:30:26      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:java 整型相除得0   java double计算   double类型数字计算   double相加很长   



做一个300 / 1570 的算数题,结果为0

是不是有点大跌眼镜

那怎么解决呢

转成Double类型,再除就没问题了

import java.math.BigDecimal;  
  
public class Arith {  
private static final int DEF_DIV_SCALE = 10;  
  
/** 
* * 两个Double数相加 * 
*  
* @param v1 * 
* @param v2 * 
* @return Double 
*/  
public static Double add(Double v1, Double v2) {  
   BigDecimal b1 = new BigDecimal(v1.toString());  
   BigDecimal b2 = new BigDecimal(v2.toString());  
   return new Double(b1.add(b2).doubleValue());  
}  
  
/** 
* * 两个Double数相减 * 
*  
* @param v1 * 
* @param v2 * 
* @return Double 
*/  
public static Double sub(Double v1, Double v2) {  
   BigDecimal b1 = new BigDecimal(v1.toString());  
   BigDecimal b2 = new BigDecimal(v2.toString());  
   return new Double(b1.subtract(b2).doubleValue());  
}  
  
/** 
* * 两个Double数相乘 * 
*  
* @param v1 * 
* @param v2 * 
* @return Double 
*/  
public static Double mul(Double v1, Double v2) {  
   BigDecimal b1 = new BigDecimal(v1.toString());  
   BigDecimal b2 = new BigDecimal(v2.toString());  
   return new Double(b1.multiply(b2).doubleValue());  
}  
  
/** 
* * 两个Double数相除 * 
*  
* @param v1 * 
* @param v2 * 
* @return Double 
*/  
public static Double div(Double v1, Double v2) {  
   BigDecimal b1 = new BigDecimal(v1.toString());  
   BigDecimal b2 = new BigDecimal(v2.toString());  
   return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)  
     .doubleValue());  
}  
  
/** 
* * 两个Double数相除,并保留scale位小数 * 
*  
* @param v1 * 
* @param v2 * 
* @param scale * 
* @return Double 
*/  
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(v1.toString());  
   BigDecimal b2 = new BigDecimal(v2.toString());  
   return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());  
}  
}  




版权声明:本文为博主原创文章,未经博主允许不得转载。

java中数字加减乘除乱象(尤其是double类型)

标签:java 整型相除得0   java double计算   double类型数字计算   double相加很长   

原文地址:http://blog.csdn.net/stronglyh/article/details/47777959

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