package org.fh.util;import java.io.Serializable;import java.math.BigDecimal;import java.math.RoundingMode;/**

* double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型

* 整型地方法适合于货币精度已知的情况,比如12.11+1.10转成1211+110计算,最后再/100即可 以下是摘抄的BigDecimal方法:

*//**

* 说明:Double工具类

* from:www.1b23.com

*/

public cla s s DoubleUtil implements Serializable {private static final long serialVersionUID = -3345205828566485102L;// 默认除法运算精度

private static final Integer DEF_DIV_SCALE = 2;/**

* 提供精确的加法运算。

*

* @param value1 被加数

* @param value2 加数

* @return 两个参数的和

*/

public static Double add(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));return b1.add(b2).doubleValue();

}/**

* 提供精确的减法运算。

*

* @param value1 被减数

* @param value2 减数

* @return 两个参数的差

*/

public static double sub(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));return b1.subtract(b2).doubleValue();

}/**

* 提供精确的乘法运算。

*

* @param value1 被乘数

* @param value2 乘数

* @return 两个参数的积

*/

public static Double mul(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));return b1.multiply(b2).doubleValue();

}/**

* 提供(相对)精确的除法运算,当发生除不尽的情况时, 精确到小数点以后10位,以后的数字四舍五入。

*

* @param dividend 被除数

* @param divisor  除数

* @return 两个参数的商

*/

public static Double divide(Double dividend, Double divisor) {return divide(dividend, divisor, DEF_DIV_SCALE);

}/**

* 提供(相对)精确的除法运算。 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。

*

* @param dividend 被除数

* @param divisor  除数

* @param scale    表示表示需要精确到小数点以后几位。

* @return 两个参数的商

*/

public static Double divide(Double dividend, Double divisor, Integer scale) {if (scale

}

BigDecimal b1 = new BigDecimal(Double.toString(dividend));

BigDecimal b2 = new BigDecimal(Double.toString(divisor));return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();

}/**

* 提供指定数值的(精确)小数位四舍五入处理。

*

* @param value 需要四舍五入的数字

* @param scale 小数点后保留几位

* @return 四舍五入后的结果

*/

public static double round(double value, int scale) {if (scale

}

BigDecimal b = new BigDecimal(Double.toString(value));

BigDecimal one = new BigDecimal("1");return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();

}

}

java double的加法_java Double 进行加减乘除相关推荐

  1. java double 的精度_java double类型相加精度问题的解决

    我就废话不多说了,大家还是直接看代码吧~ package com.hxyl.action; import java.text.DecimalFormat; public class Test { pu ...

  2. java double 的精度_Java Double的精度问题

    Java.text 类 DecimalFormat java.lang.Object java.text.Format java.text.NumberFormat java.text.Decimal ...

  3. java中multiply用法_java中BigDecimal加减乘除基本用法

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数. 在实际应用中,需要对更大或者更小的数进 ...

  4. 怎么设置java的精度值_Java:如何为double值设置Precision?

    本问题已经有最佳答案,请猛点这里访问. 我最近正在处理数字,我有一种情况,我想将双精度值的精度设置为6位或4位,这取决于数据库中存储的值. 例如,如果在数据库中,精度设置为4位,则输出必须如下所示: ...

  5. java double方法_Java Double类compare()方法与示例

    java double方法 双类compare()方法 (Double class compare() method) compare() method is available in java.la ...

  6. java double 保留小数_java使double类型保留两位小数的方法

    java使double类型保留两位小数的方法 本文是百分网小编整理的主要介绍关于java使double类型保留两位小数的方法,有需要的朋友们一起看看吧!想了解更多相关信息请持续关注我们应届毕业生考试网 ...

  7. java 正确的表达式_JAVA程序设计课程作业,二、多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou...

    JAVA程序设计课程作业,二.多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou JAVA程序设计课程作业, 二.多选题 1.指出正确的表达式 A.double ...

  8. java double 取余_java中double除法和取余的若干注意

    1 整数除法中,除数为0,抛出一个算术异常ArithmeticException.整数取余运算中,除数为0,抛出一个ArithmeticException异常. 如: class Test { pub ...

  9. java double数值范围_Java中float和double的取值范围该怎样理解?

    展开全部 基本类型float占4个字节,二进制位数e5a48de588b662616964757a686964616f31333366306464有32位,取值范围为[-3.4028234663852 ...

最新文章

  1. 微软OOXML申请国际文档标准已获通过 中国投反对票
  2. 002:用Python设计第一个游戏
  3. Kali Linux 2020.1修改root用户密码
  4. 查看linux java home_查看Linux中自带的jdk,设置JAVA_HOME
  5. 例说C#深拷贝与浅拷贝
  6. 形位公差符号大全_玩转CAD快捷键(大全),一篇文章就够了
  7. echarts绘制世界地图,中国地图在中间
  8. Word文档字间距怎么调?
  9. IC授权卡和复制卡的区别_DIY电脑——A卡和N卡有区别吗
  10. 无背景申请奥克兰大学计算机,奥克兰大学无背景要求的专业
  11. PHP网页页脚咋设计,50个网页头部与网页页脚设计欣赏
  12. 计算机辅助地理教学的内容,信息技术辅助地理教学
  13. python基础训练—数字
  14. redhat linux 7.2系统安装详细过程
  15. 咩话,event前总是要判定?
  16. DEDE建站如何去掉首页的index.html后缀?
  17. python 与and运算符
  18. 如何在国内优雅地使用Rancher
  19. vintage、迁移率、滚动率、入催率等概念——看完你就懂了
  20. 本地计算机上的windows installer,解决Windows installer被禁用的问题

热门文章

  1. Python 学习 DAY1
  2. Leetcode - 广度优先遍历专题
  3. SQL数据库只读问题
  4. [VTK]VTK的三维模型保存、读取之保存为vtk格式
  5. 汇编语言学习--转移指令的原理
  6. SAP中方会计凭证打印解决方案
  7. 修改 Chrome浏览器主页被劫持 chrome 主页被篡改成hao.qquu8.com的解决方案
  8. 【报告分享】2021H1电商发展分析报告.pdf(附下载链接)
  9. 【推荐实践】微博在线机器学习和深度学习实践(文末附PPT下载链接)
  10. 通俗易懂!视觉slam第四部分——slam刚体三维空间运动