Java BigDecimal、Integer、Long、Double类型数值累加求和

文章目录

  • 1 BigDecimal类型数值累加求和
    • 1.1 for循环实现
    • 1.2 stream().reduce()实现
    • 2 Integer类型数值累加求和
      • 2.1 for循环实现
      • 2.2 stream().reduce()实现
      • 2.3 Collectors.summingInt()实现
      • 2.4 Collectors.summarizingInt()实现
      • 3 Long类型数值累加求和
        • 3.1 for循环实现
        • 3.2 stream().reduce()实现
        • 3.3 Collectors.summingLong()实现
        • 3.4 Collectors.summarizingInt()实现
        • 4 Double类型数值累加求和
          • 4.1 for循环实现
          • 5 BigDecimal工具类
          • 6 Object转BigDecimal类型
          • 总结

            1 BigDecimal类型数值累加求和

            1.1 for循环实现

            List list=new ArrayList<>();
            BigDecimal sum=new BigDecimal(0);
            for(BigDecimal decimal:list){ sum=sum.add(decimal);
            }
            

            1.2 stream().reduce()实现

            List list=new ArrayList<>();
            BigDecimal sum=list.stream().reduce(0,BigDecimal::add);
            

            2 Integer类型数值累加求和

            2.1 for循环实现

            List list=new ArrayList<>();
            Integer sum=0;
            for(Integer i:list){ sum+=i;
            }
            

            2.2 stream().reduce()实现

            List list=new ArrayList<>();
            //lambda表达式实现
            Integer sum = list.stream().reduce(0, (current, number) -> current + number);
            //方法引用实现
            Integer sum2 = list.stream().reduce(0, Integer::sum); 

            2.3 Collectors.summingInt()实现

            List list=new ArrayList<>();
            long sum = list.stream().collect(Collectors.summingInt(x -> x));
            

            2.4 Collectors.summarizingInt()实现

             List list = new ArrayList<>();
                    IntSummaryStatistics summaryStatistics = list.stream().collect(Collectors.summarizingInt(x -> x));
                    long sum = summaryStatistics.getSum(); 

            3 Long类型数值累加求和

            3.1 for循环实现

            List list=new ArrayList<>();
            Long sum=0L;
            for(Long i:list){ sum+=i;
            }
            

            3.2 stream().reduce()实现

            List list=new ArrayList<>();
            //lambda表达式实现
            Long sum = list.stream().reduce(0L, (current, number) -> current + number);
            //方法引用实现
            Long sum2 = list.stream().reduce(0L, Long::sum); 

            3.3 Collectors.summingLong()实现

            List list=new ArrayList<>();
            long sum = list.stream().collect(Collectors.summingLong(x -> x));
            

            3.4 Collectors.summarizingInt()实现

             List list = new ArrayList<>();
                    LongSummaryStatistics summaryStatistics = list.stream().collect(Collectors.summarizingLong(x -> x));
                    long sum = summaryStatistics.getSum();
            

            4 Double类型数值累加求和

            4.1 for循环实现

            List list = new ArrayList<>();
            Double sum = 0d;
            for (Double i : list) { sum += i;
            }
            

            注意 Double小数点失真问题解决 : 先把Double转为BigDecimal,再求和。代码如下 :

            List list = new ArrayList<>();
                    list.add(1.24224D);
                    list.add(1.24224D);
                    list.add(1.32224D);
                    BigDecimal bSum = new BigDecimal(0);
                    for (Double i : list) { bSum = bSum.add(BigDecimal.valueOf(i));
                    }
                    System.out.println(bSum.doubleValue());
            

            5 BigDecimal工具类

            6 Object转BigDecimal类型


            总结

            如果此篇文章有帮助到您, 希望打大佬们能关注、点赞、收藏、评论支持一波,非常感谢大家!

            如果有不对的地方请指正!!!

            参考1