关闭

Double类型运算

65人阅读 评论(0) 收藏 举报
分类:
import java.math.BigDecimal;

/**
 * Created by liutianyu on 17/9/6.
 */

public class DoubleUtil {

    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());
    }

}
0
0
查看评论

double类型的运算

import java.math.BigDecimal; public class Arith { private static final int DEF_DIV_SCALE = 10; /** * * 两个Double数相加 * * * @param v1 * ...
  • lifan5
  • lifan5
  • 2016-12-14 15:58
  • 1171

double 类型运算时出现的问题及解决方案

Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。   这个问题相当严重,如果...
  • lovexiaozeng336
  • lovexiaozeng336
  • 2013-02-18 11:09
  • 243

double类型法运算时可能有精度损失,而decimal没有

以下摘自http://www.cnblogs.com/xiaoL/archive/2011/01/20/1939835.html,并在最后对此做了我的测试和解释 一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。 浮点型 ...
  • liliuteng
  • liliuteng
  • 2012-10-11 19:31
  • 1476

Double 类型运算时的精度问题

double 类型运算时的 计算的精度不高,经常会出现0.999999999999999这样的情况,那么就需要用BigDecimal   它是java提供的用来高精度计算的工具类 下面是对这个类的一个包装,方便使用:   package cn.soft.util; ...
  • xiananliu
  • xiananliu
  • 2014-05-10 00:38
  • 796

Java_util_Double类型运算

public class Arithmetic4Double {             //默认除法运算精度             private static final...
  • mikyz
  • mikyz
  • 2017-04-06 17:46
  • 366

Double类型的数相加会出错

解决办法: (可以不使用)① 首先控制小数点后面的位数,例如保留四位小数: DecimalFormat df  = new DecimalFormat("0.0000"); ② 将操作的两个Double类型的数据转换成BigDecimal 例如: Do...
  • zhanghe687
  • zhanghe687
  • 2016-12-06 21:15
  • 796

java double类型运算问题

问题重现: double i = 0.1; System.out.println(i+i+i); 运行上面的语句,最终的结果是: 很奇怪,并不是想象中的0.3,错误在哪里? 原因:这其实是计算机内部机制导致的问题,具体就是计算机中存储浮点数的机制,导致浮点数如果参与了运算,那么就可能会丧失精...
  • u010900754
  • u010900754
  • 2016-04-13 14:12
  • 710

java double类型-加减乘除高精度运算

double类型-加减乘除高精度运算 // 进行加法运算  private  double add(double v1,double v2){           BigDecimal b1 = new BigDec...
  • haihongazar
  • haihongazar
  • 2016-01-06 08:51
  • 4524

java之double类型运算

问题在java中,double类型的数值进行计算时,是会出问题的。 例如:下面的很简单的乘法运算//excepted result = 354.35 double dd = 373*0.95;打印输出的结果为: 354.34999999999997,实际的计算结果为354.35。...
  • wzuden
  • wzuden
  • 2017-07-20 15:12
  • 80

java重double类型不能用来计算问题

偶然发现的一个问题: 标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改     关键字 ...
  • u010523770
  • u010523770
  • 2016-09-01 19:30
  • 776
    个人资料
    • 访问:27375次
    • 积分:769
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:34篇
    • 译文:1篇
    • 评论:10条
    文章分类
    最新评论