import java.math.BigDecimal;
public class DoubleUtil { private static final int DEF_DIV_SCALE = 5; // 小数点后的保留位数 /**
* Double精确的加法运算
* @param d1 被加数
* @param d2 加数
* @return 两个参数的和
*/
public static double add( double d1, double d2 ) {
BigDecimal value1 = new BigDecimal( Double.toString(d1) );
BigDecimal value2 = new BigDecimal( Double.toString(d2) );
return value1.add(value2).doubleValue();
} /**
* Double精确的减法运算
* @param d1 被减数
* @param d2 减数
* @return 两个参数的差
*/
public static double sub( double d1, double d2 ) {
BigDecimal value1 = new BigDecimal( Double.toString(d1) );
BigDecimal value2 = new BigDecimal( Double.toString(d2) );
return value1.subtract(value2).doubleValue();
} /**
* Double精确的乘法运算
* @param d1 被乘数
* @param d2 乘数
* @return 两个参数的积
*/
public static Double mul( double d1, double d2 ) {
BigDecimal value1 = new BigDecimal( Double.toString(d1) );
BigDecimal value2 = new BigDecimal( Double.toString(d2) );
return value1.multiply(value2).doubleValue();
} /**
* Double精确的除法运算, 当出现除不尽的情况时, 精确到小数点以后10位, 以后的数字四舍五入
* @param d1 被除数
* @param d2 除数
* @return 两个参数的商
*/
public static double div( double d1, double d2 ) {
return div( d1, d2, DEF_DIV_SCALE );
} /**
* Double精确的除法运算, 当出现除不尽的情况时, 精确到小数点以后10位, 以后的数字四舍五入
* @param d1 被除数
* @param d2 除数
* @param scale 表示需要精确到小数点的后几位
* @return 两个参数的商
*/
public static double div( double d1, double d2, int scale ) {
if ( scale < 0 ) {
throw new IllegalArgumentException( "参数[scale]必须是正整数或者零" );
}
BigDecimal value1 = new BigDecimal( Double.toString(d1) );
BigDecimal value2 = new BigDecimal( Double.toString(d2) );
return value1.divide( value2, scale, BigDecimal.ROUND_HALF_UP ).doubleValue();
} }

Java中Double类型的精确计算的更多相关文章

  1. Java中double类型的数据精确到小数点后两位

    Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...

  2. 关于java中Double类型的运算精度问题

    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...

  3. java的double类型如何精确到一位小数?

    java的double类型如何精确到一位小数? //分钟转小时vacationNum = (double)Math.round(vacationNum/60*10)/10.0;overTimeNum ...

  4. Java中Double类型计算问题

    public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);  ...

  5. 关于java中Double类型的运算精度问题(转)

    Java Java double:浮点数:精确计算  public class Test{    public static void main(String args[]){        Syst ...

  6. Java 大数值类型执行精确计算

    简介 如果基本的整数和浮点数精度不能够满足需求,那么可以使用 java.math 包下两个很有用的类:BigInteger 和 BigDecimal.这两个类可以处理包含任意长度数字序列的数值,Big ...

  7. JAVA中double类型运算结果异常的解决

    问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); ...

  8. java中double类型显示两个小数,比如12.00

    Double类型的数据如何保留两位小数? 各位大虾,现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的,而不是字符串类型. 比如     0,返回“0.00” ...

  9. 如何使java中double类型不以科学计数法表示

    在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:DecimalFormat a = new Decimal ...

随机推荐

  1. es6 模板字符串

    模板字符串 提供构造字符串的语法糖,在 Prel/python 等语言中也都有类似特性. 1.反引号模板,可以换行 2.反引号模板,可以嵌套 用+``来嵌套 好处:语法更加简洁 var name=&q ...

  2. Django中model层详解

    #!/usr/bin/env python# _*_ coding:utf-8 _*_ from django.db import models class UserType(models.Model ...

  3. Ncurses - Panel

    当你需要创建许多窗口时,你很快就会发现它们会变得难以管理.Panel library提供了很好的解决方案. Panel 实际上是一个窗口,通过容器 - 栈 来管理,栈顶的 panel 是完全可见的,其 ...

  4. sql 将一列一逗号分隔拼成字符串

    select stuff((select ','+w.Waybillno from Web_Way_Waybill w where w.IsValid<>'Y' AND w.TruckOr ...

  5. 阿里巴巴Java开发规范手册

      Java开发手册 版本号 制定团队 更新日期 备  注 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向Java业界公开 一.编程规约 (一) 命名规约 1.   [强制]所有编程相关命 ...

  6. 2200: [Usaco2011 Jan]道路和航线 (拓扑排序+dijstra)

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  7. POJ 1330 Nearest Common Ancestors (模板题)【LCA】

    <题目链接> 题目大意: 给出一棵树,问任意两个点的最近公共祖先的编号. 解题分析:LCA模板题,下面用的是树上倍增求解. #include <iostream> #inclu ...

  8. Linux学习笔记7

    执行脚本篇章 r w x 读  写 执行 4 2 1 如果要启动tomcat 服务器 即执行 startup.sh脚本文件 1> #chmod 444 startup.sh 增加文本读权限 -r ...

  9. jquery 1.7.2源码解析(一)总体架构

    总体架构 jquery模块分类和依赖关系: 自调用匿名函数: /** * 自调用匿名函数,jquery加载完后立即被调用,用来加载各个模块 * 为什么使用自调用匿名函数: * 通过使用自调用匿名函数, ...

  10. Linux下MySQL数据库常用基本操作

    1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...