double类型精度计算
来源:互联网 发布:企业统一认证 知乎 编辑:程序博客网 时间:2024/06/05 04:25
double类型精度计算
package com.demo.utils;import java.math.BigDecimal;/** * double类型精度计算 * +-/*精度计算(不合适大数据量) * 可变参数太多,数以万计时应采取多线程并行计算优化 * @author dongyangyang * @Date 2016/12/28 23:12 * @Version 1.0 * */public class DoubleNumUtils { /** * 对double数据进行精度加法计算 例如a+b+c+....+n * @param a double数据(可变参数 数组) * @return 精度计算后的数据. */ public static double add(double ... a) { if(a == null || a.length==0){ return 0; }else if(a.length==1){ return a[0]; }else{ BigDecimal result = new BigDecimal(Double.toString(a[0])); for (int i = 1; i < a.length; i++) { result = result.add(new BigDecimal(Double.toString(a[i]))); } return result.doubleValue(); } } /** * 对double数据进行精度减法计算,例如a-b-c-....-n * @param a double数据(可变参数 数组) * @return 精度计算后的数据. */ public static double subtract(double ... a) { if(a == null || a.length==0){ return 0; }else if(a.length==1){ return a[0]; }else{ BigDecimal result = new BigDecimal(Double.toString(a[0])); for (int i = 1; i < a.length; i++) { result = result.subtract(new BigDecimal(Double.toString(a[i]))); } return result.doubleValue(); } } /** * 对double数据进行精度乘法计算,例如a*b*c*....*n * @param a * @return */ public static double multiply(double ... a) { if(a == null || a.length==0){ return 0; }else if(a.length==1){ return a[0]; }else{ BigDecimal result = new BigDecimal(Double.toString(a[0])); for (int i = 1; i < a.length; i++) { result = result.multiply(new BigDecimal(Double.toString(a[i]))); } return result.doubleValue(); } } /** * 对double数据进行精度除法计算,例如a/b/c/..../n * @param a * @return */ public static double divide(double ... a) { if(a == null || a.length==0){ return 0; }else if(a.length==1){ return a[0]; }else{ BigDecimal result = new BigDecimal(Double.toString(a[0])); for (int i = 1; i < a.length; i++) { result = result.divide(new BigDecimal(Double.toString(a[i]))); } return result.doubleValue(); } } public static void main(String[] args) { double a = 0.31,b=0.27; System.out.println(a+b); double add = add(0.31,0.27); //比较add和a+b的区别 double subtract = subtract(1,0.3,0.1,0.1); double multiply = multiply(10,1,3,2); double divide = divide(100,2,5); System.out.println(add); System.out.println(subtract); System.out.println(multiply); System.out.println(divide); }}
0 0
- double类型精度计算
- JAVA中double类型计算精度控制
- double类型计算精度确实问题
- Java中的Double类型的精度计算
- iOS double类型精度问题以及计算问题
- java中double、float类型计算精度丢失问题
- double 计算精度的问题
- java double float 精度计算
- java double 计算损失精度
- Java计算double精度问题
- java double 计算损失精度
- JAVA计算double精度丢失
- double类型相加精度问题解决
- java double类型精度问题解决
- java double类型精度控制
- double类型的精度问题【计算时有误差】。 (0.1 * 0.1 , 1.0 - 0.9)
- double类型的计算
- Java 中double变量的精度计算
- 题目1166:迭代求立方根
- 机器人走方格2
- 安装SDKMAN(The Software Development Kit Manager)
- Java 线程回调
- 关联和依赖的区别
- double类型精度计算
- 如何在ASP.Net创建各种3D图表
- java之IO流(一)
- SQL 事务隔离级别
- Java Lambda(2)
- 背景模型
- 题目1167:数组排序
- java中volatile关键字的含义
- 2017-1期