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

这篇具有很好参考价值的文章主要介绍了Java BigDecimal、Integer、Long、Double类型数值累加求和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 BigDecimal类型数值累加求和

1.1 for循环实现

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

1.2 stream().reduce()实现

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

2 Integer类型数值累加求和

2.1 for循环实现

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

2.2 stream().reduce()实现

List<Integer> 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<Integer> list=new ArrayList<>();
long sum = list.stream().collect(Collectors.summingInt(x -> x));

2.4 Collectors.summarizingInt()实现

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

3 Long类型数值累加求和

3.1 for循环实现

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

3.2 stream().reduce()实现

List<Long> 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<Long> list=new ArrayList<>();
long sum = list.stream().collect(Collectors.summingLong(x -> x));

3.4 Collectors.summarizingInt()实现

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

4 Double类型数值累加求和

4.1 for循环实现

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

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

		List<Double> 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文章来源地址https://www.toymoban.com/news/detail-787578.html

到了这里,关于Java BigDecimal、Integer、Long、Double类型数值累加求和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java Long 转Integer

    要将 Java 中的 Long 类型转换为 Integer 类型,您可以使用 Integer 类中提供的 intValue() 方法。 例如,假设您有一个 Long 类型的变量 longValue,您可以使用以下代码将其转换为 Integer 类型: 请注意,如果 Long 类型的变量 longValue 超出了 Integer 类型的范围,即超过了 -2147483648 到 21474

    2024年02月11日
    浏览(36)
  • Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    阿里Java开发手册嵩山版中明确指出: 1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法 equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度 2、禁止使用构造方法BigDecimal(double)的方式把double值转换为BigDecimal对象 BigDecimal(double)存在精度损

    2024年02月07日
    浏览(54)
  • bigdecimal转integer

    将 BigDecimal 转换为 Integer,可以使用 intValue() 方法。这个方法将 BigDecimal 对象转换为一个整数类型的值(即 int 类型),然后将其自动装箱为 Integer 类型。 以下是示例代码: 输出结果: 需要注意的是,在进行 BigDecimal 转 Integer 的过程中,如果 BigDecimal 值的小数部分存在,则它

    2024年02月11日
    浏览(40)
  • Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long错误的详细解决方法

    今天写好 hive表导入的回调 的接口,如下代码所示: 启动 postman 访问该接口,确报出如下错误: 即 Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long 根据 java.lang.ClassCastException 可知,这是 java 类型转换的异常错误。 其次,再将错误信息 java.lang.String cannot b

    2024年02月13日
    浏览(41)
  • java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap' springboot的异常信息,怎...

    这个错误信息表示在Spring Boot应用程序中,类 java.lang.Integer 和 java.lang.Long 被认为在模块 java.base 中加载,但实际上它们在应用程序的类路径中可用。 这通常是由于使用了不同版本的Java来运行应用程序和加载类路径上的类。 为了解决这个问题,可以使用以下方法之一: 确保应

    2024年02月11日
    浏览(65)
  • Java中如何将String类型转为double类型

    在Java编程中,经常需要在不同数据类型之间进行转换。将String类型转换为double类型是一种常见的转换需求。Java提供了几种方法来实现这种转换,下面将介绍其中的两种常用方法。 方法一:使用Double类的parseDouble方法 Double类是Java中用于表示双精度浮点数的包装类。它提供了一

    2024年02月05日
    浏览(41)
  • 日常BUG——Java使用Bigdecimal类型报错

    😜 作           者 :是江迪呀 ✒️ 本文 : 日常BUG 、 BUG 、 问题分析 ☀️ 每日   一言 : 存在错误说明你在进步! 直接上代码: 报错内容: 原来JAVA中如果用 BigDecimal 做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除

    2024年02月13日
    浏览(43)
  • 【Java 排序】冒泡排序(升降序,Int类型,Double类型,多数组排序)(111)

    思路: 用二重循环实现,外循环变量设为i,内循环变量设为j。假如有n个数需要进行排序,则外循环重复n-1次,内循环依次重复n-1,n-2,…,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,…,n-1,对于每一个i,j的值依次

    2024年02月12日
    浏览(40)
  • Integer、Long 等包装类 == 值判断、地址判断与缓存

    先看下以下代码和输出 a=aa? true  b=bb? true  c=cc? false  d=dd? false  e=ee? true  f=ff? true  那么为什么会会出现这样的结果呢? 这是因为==只有在Java基本类型(short,int,long,byte,char,float,double,boolean)中比较的是值,其他类型中比较的是内存地址。因此,InteGer类中==比较的是

    2024年02月10日
    浏览(35)
  • java Long 类型如何比较

    Java 中的 Long 类型可以使用下列方法进行比较: 使用 compareTo 方法: 使用三目运算符: 使用 Long.valueOf 和 equals 方法: 请注意,如果要比较两个 Long 对象的值,则应使用 equals 方法,而不是使用 == 运算符。

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包