多个double相加Util


public class DoubleUtils {

    /**
     * 多个double的值相加
     * @param v1
     * @param v2
     * @return
     */
        public static Double add(Double... v1) {
             double sum= 0;
        for (Double double1 : v1) {
            BigDecimal b1 = new BigDecimal(double1.toString());
            BigDecimal b2 = new BigDecimal(Double.toString(sum));
             sum=b1.add(b2).doubleValue();
        }
           return sum;
        }  

}
时间: 2024-08-30 07:42:45

多个double相加Util的相关文章

double相加(減)结果会有些误差

原文:double相加(減)结果会有些误差 前提介绍 今天在调试代码的时候发现了一个double类型数据相减的有趣问题,148163.1 - 82692.09大家猜猜结果等于多少,经过调试最终为5471.010000000009. 是不是很奇怪,下面将说明这其中的奥妙! 原因说明 double属于floating binary point types,也就是说都double型的数值在相加减的时候,会将数值转换成二进制的数值如10001.10010110011这种表示发再做相加减,但是在转换成二进

java中两double相加精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); } 控制台输出2001299.4300000002 我们吃惊的发现,结果并不是我们预想的那样,这是为什么呢?又如何解决呢? 现贴出BigDecimal的一个构造函数的文档供大家参考 BigDecimal pu

【Java】Java处理double相加的结果异常

方式一(四舍五入):保留两位小数 1 double f = 111231.5585; 2 BigDecimal b = new BigDecimal(f); 3 double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 方式二: 1 java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); 2 df.format(你要格式化的数字); 例:

java double 计算损失精度

计算double类型的数时有时候会多出0.000000001,会有不确定个数的0,在计算时将其转为BigDecimal就不会出错. BigDecimal sum = new BigDecimal(0.0);                BigDecimal tmp = new BigDecimal(0.0);                for(int i=0; i<list.size(); i++){                    tmp = new BigDecimal(list

关于Java中用Double型运算时精度丢失的问题

注:转自 https://blog.csdn.net/bleach_kids/article/details/49129943 在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1. 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情. 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错. BigDecimal在<Eff

MaxCompute - ODPS重装上阵 第六弹 - User Defined Type

MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务. MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力. MaxCompute基于ODPS2.0新一代的SQL引擎,显著提升了SQL语言编译过程的易用性与语言的表达能力.我们在此推出MaxCompute(ODPS2.0)重装上阵系列文章 第一弹 - 善用MaxCompute编译器的错误和警

Struts2请求数据处理及拦截器(二)

简介 以后如果没有特殊的要说,就在简介中介绍一下大概的知识点.今天主要学习封装请求参数及类型转换.用户输入校验.国际化.拦截器 Struts2封装请求参数的方式 方式一: Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器实现的) 产生疑问:使用第一种数据封装方式,数据封装到Action属性中,不可能将Action对象传递给 业务层 * 需要再定义单独JavaBean ,将Action属性封装到 JavaBean,得出第二种方式 方式二: 动作类和模型

Java 方法重载,方法重写(覆盖),继承等细节注意

1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类型了! 2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同. 三.方法的返回类型.修饰符可以相同,也可不同. 四.main方法也可以被重载 方法重载的作用:可以一个相同的方法传入不同的参数以达到想要的结果 2.方法继承

java学习笔记(菜鸟原创)

搭建Java开发环境使用开发工具开发Myeclipse基础核心:JAVASEEEME面向对象 API JVM.JAVAEE是指java enterprise edition,java企业版,多用于企业级开发,包括web开发等等很多组建JAVASE是指java standard edition,Java标准版,就是一般Java程序的开发就可以,可以看作是JAVAEE的子集 JVM(java virtual machine)源代码myprogram.Java--(编译器)二进制字节码myprogra