两个整数求平均值,防止溢出的问题

http://bylijinnan.iteye.com/blog/1463337

bigInteger 没有上限,取决于计算机的内存;

https://www.jianshu.com/p/8b89ab19db84

其实也可以这样:

package com.stono;public class Test02 {public static void main(String[] args) {int i1 = Integer.MAX_VALUE-2; // 214748 3645int i2 = Integer.MAX_VALUE-3; // 214748 3644System.out.println((i1+i2)/2); // 直接相加就溢出了int sa = sumAverage(i1,i2);System.out.println(sa);System.out.println(1/2); // 这个等于0的;System.out.println(sumAverage(7, 7));System.out.println(7/2);}private static int sumAverage(int i1, int i2) {int i1sa = i1/2;int i2sa = i2/2;int sasa = (i1%2+i2%2)/2; // 防止两个奇数的末位被抹掉了;return i1sa+i2sa+sasa;}}

用位操作提升一下速度:

    private static int sumAverage(int i1, int i2) {int i1sa = i1>>1;int i2sa = i2>>1;int sasa = (i1&1+i2&1)>>1; // 防止两个奇数的末位被抹掉了;return i1sa+i2sa+sasa;}

转载于:https://www.cnblogs.com/stono/p/8507156.html

两个整数求平均值,防止溢出的问题相关推荐

  1. c语言求两个数的乘积和商,输入两个整数,求出它们的商数

    编写一个程序,输入两个整数,计算并输出它们的和,乘积,差,商和余数,C语言, #includevoidmain(){inta,b;printf("Inputtwointegers:" ...

  2. 两个整数相加减是否溢出

    #include<stdio.h> #include<stdint.h>// 两个整数相加减,没有溢出时返回0 int tadd_ok(int x, int y) {int s ...

  3. 不同符号的两个整数求余和取模的计算技巧(规律)

    文章目录 求余函数和取模函数的区别 x 和 y 符号不同,求余数和模数的技巧 求余的运算规律(技巧) 取模的运算规律(技巧) 求余函数和取模函数的区别 求余函数rem(x,y) 和取模函数 mod(x ...

  4. 用c语言编写两整数乘积,c语言两个数相乘求积 c语言输入两个整数求乘积

    C语言中求两数相乘的程序? 思路:double类型的范围: -1.7*10(-308)-1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算. 参考代码: #inclu ...

  5. JAVA取两个整数的中间值,不出现溢出

    取两个整数中间值不溢出 今天用二分写算法的时候发现竟然超时了,后面调试发现原来是2个整数相加溢出变成负数了,记录一下不溢出取中间值的方法 下面是一般取中间值的写法 int m = (low+high) ...

  6. a除以b的编程怎么写C语言,输入a,b两个整数,编程求出a除以b得到的商和余数.c语言...

    C语言编程问题 编程任意输入两个实数a和b,计算下面函数的值,并输出y值. a-b a>b y= a/b a #includevoidmain(){\x09floata,b,y;\x09prin ...

  7. python list排序_python里对list中的整数求平均并排序

    python里对list中的整数求平均并排序 本文主要记述了使用Python将list重点整数求平均值之后在进行排列的过程,并把代码分享给大家, 问题 定义一个int型的一维数组,包含40个元素,用来 ...

  8. 【Python基础】①求两个整数的和与平均值

    #输入两个整数,求其和与平均值 m=eval(input("请输入整数1:")) n=eval(input("请输入整数2:")) s=m+n avg=(m+n ...

  9. java输入两个整数_求平均值._用C语言编写:完成从键盘输入两个整数a和b,求平均值ave,并输出平均值...

    #includevoid main(){int a,b,ave;printf("输入两个整数:');scanf("%d%d",&a,&b);ave=(a+ ...

最新文章

  1. 如何从ATS获取客户端平均响应时间(单位,毫秒)?
  2. 【转】Android source build/envsetup.sh学习笔记
  3. 经验传承:谈色彩设计方法
  4. c语音 udp最大长度_c语言udp自定义头文件 网络通信程序
  5. 如何使用 PTS 快速发起微服务压测
  6. 程序员必备技能-科学砍需求
  7. 如果把西游记倒过来看,这才是真正的社会
  8. Identity Server 4 预备知识 -- OpenID Connect 简介
  9. vscode 里解决跨域的插件_VSCode里的逆天插件,可边写代码边画逻辑流程图了
  10. 典型相关分析_微生物多样研究—微生物深度分析概述
  11. python新手入门总结_写给已有编程经验的 Python 初学者的总结
  12. 客运售票员_「我做一天春运人」体验通村客车售票员兼安全员 温馨慢车上我背着太阳奔跑...
  13. Python panads数据处理二
  14. iZotope RX 9 for Mac(数字音频修复工具)
  15. R语言作业wine 数据
  16. BTA12A-ASEMI的12A双向可控硅IGBT管
  17. 计算机技术对英语课堂,信息技术在英语课堂中的运用
  18. OSChina 周五乱弹 —— 睡觉都枕着小姐姐
  19. Matlab篇----常用的回归分析Matlab命令(regress篇)
  20. 深度学习(三)——深层神经网络

热门文章

  1. p1292监狱(动态规划)
  2. SSH框架整合截图总结(三)
  3. mbed OS - ARM关于物联网(IoT)的战略布局
  4. 通过Ajax的方式执行GP服务
  5. Linux与shell编程之一: Linux基础知识总结
  6. jenkins-邮件通知
  7. 【电商系统】—项目缺陷管理(二)
  8. 【博客项目】—密码加密( 六)
  9. JavaScript学习(十三)—节点关系
  10. PowerPoint什么意思