如何正确的计算两个数的平均数

详解集中量数(各类平均数:平均数、几何平均数、调和平均数) 本章节主要讲解一些常见的集中量数计算方法、意义及特点,计算方法,同时会给出R语言计算代码,向大家分享。使用的教材是:张厚粲《现代心理与教育统计学》第四版,对应着的是第三章0. 集中趋势VS离中趋势集中趋势(central tendency)与离中趋势是次数分布的两个基本特征。数据的集中趋势就是指数据分布中大量数据向某方向集中的程度;离中趋势是指数据分布中数据彼此分散的程度。这两种量数一起共同描述或反映-组数据的全貌及其各种统计特征。用于描述数据集中程度的统计量,即集中量数。 阅读详情

两个int整数平均数: 说到平均数,我们首先想到的肯定是两个数相加除以2,这个算法一般来说肯定是没错的,但是当我进行测试时出现了这样的问题:`import java.util.Scanner;

public class Average {
public static void main(String[] args) {
Scanner read=new Scanner(System.in);
System.out.println(“请输入第一个整数”);
int a=read.nextInt();
System.out.println(“请输入第二个整数”);
int b=read.nextInt();
System.out.println(“他们的平均数是”+(a+b)/2);`
当我给a=10亿,b=20亿时,a和b此时用上面的程序运行的结果是-647483648。究其原因是int 的范围限制在-2的23次方和2的23次方减一,当两个数过大或者过小是就会出范围溢出。
所以有一种算法是:

1.a,b是要求平均值的两个数,那么先对这两个数进行异或运算,如果得到的结果小于0,说明他们不同号,如果大于0,说明他们同号,否则,都为0。
2.如果a,b同号,采用平均数=a+(a-b)/2;如果不同号,那么直接相加求其平均数即可。
注:转载自http://www.cnblogs.com/LZHua/p/5914435.html

public class BigDigitalSum {
    /**
     * 这个算法可以求任意长度 两个数的和
     */


    public static String sumByBit(String str1, String str2) {
        if (str1.length() > str2.length()) {
            int diff = str1.length() - str2.length();
            str2 = fillZero(str2, diff);//这里我加了一个fillzero方法,以补齐长度,使两字符串(数字)长度相等
        }
        if (str1.length() < str2.length()) {
            int diff = str2.length() - str1.length();
            str1 = fillZero(str1, diff);
        }
        char[] arr1 = str1.toCharArray();
        char[] arr2 = str2.toCharArray();
        StringBuffer result = new StringBuffer();
        int i = arr1.length - 1;//循环初始值,即数字的个位
        int carryFlag = 0;// 进位标识
        int c0 = '0';// '0'的ASCII值
        while (i >= 0) {
            int temp = arr1[i] + arr2[i] - 2 * c0 + carryFlag;//一定要加上低位的进位
            carryFlag = 0;//每次循环把进位标志清0
            if (temp >= 10) {
                temp -= 10;
                carryFlag = 1;
            }
            result.insert(0, temp);//因为用StringBuffer承载结果,所以可以把每次的运算结果插入到最前面。也可以往后append,最后把字符串反转就可以得到正确结果
            i--;
        }
        //循环结束后,两数最高位之和如果还有进位,则一定要记得把这个进位写到结果的最高位
        if (carryFlag == 1) {
            result.insert(0, "1");
        }
        return result.toString();
    }

    /*
     * 该方法往位数少的数的高位补0,使两数位数相同
     */
    private static String fillZero(String str, int diff) {
        StringBuffer sb = new StringBuffer(str);
        StringBuffer zeros = new StringBuffer();
        for (int i = 0; i < diff; i++) {
            zeros.insert(0, "0");
        }
        sb.insert(0, zeros);
        return sb.toString();
    }
    public static void main(String[] args) {
    String  str1="10000000000001000";
    String  str2="200000000000000000";
    long  a=Long.parseLong(str1)>>1;
    long  b=Long.parseLong(str2)>>1;
    System.out.println( BigDigitalSum.sumByBit(String.valueOf(a),String.valueOf(b)));
    }
}
整型数据求平均数方法的探讨 <br />今天在网上看到一个很有意思的题目,求两个int类型数字的平均值,并作为int类型返回.<br />下面这种代码是显然错误的<br />int average(int a, int b) { return (a+b)/2; } <br />道理也很显然,这个代码没有考虑到溢出的情况,如果a,b太大或太小,就会返回一个错误的结果,比如当a=2147483647 b=1时,<br />这段代码会返回-1073741824而不是正确的结果1073741824.<br />另外一个容易犯的错 阅读详情

相关推荐

从零到一:高通Memory QMVS测试环境搭建的避坑指南

本文详细介绍了高通Memory QMVS测试环境搭建的全流程避坑指南,涵盖硬件选择、软件配置、QMVS核心组件安装及测试执行技巧。重点解析了adb工具配置、QPST日志抓取等关键步骤,帮助工程师高效搭建稳定测试环境,避免常见兼容性和稳定性问题。

weixin_29251567的博客 556

计算两个数的平均值几种方法

方法一:直接求平均值(两个数相加再除以二) int average(int x,int y){ return (x + y) / 2; } 这种算法存在着一定的缺陷,当x和y足够大时x和y的和就会存在数据溢出,从而得不到我们想要的结果。(不推荐采用) 方法二:x + y与x的差值除以2的和,可以避免数据溢出 int average(int x,int y){ return x + (y - x) / 2; } 方法三:改进方法二版本(位移) int average(int.

一位打工仔的博客 9845

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 530

计算两个数平均数的三种方法

第一种方法 思路:两数相加然后除以2 参考代码: #include&lt;stdio.h&gt; int main() { int a = 10; int b = 20; int aver = (a + b) / 2; //int aver = (a + b) &gt;&gt; 1; ...

HanSion.Z 1万+

实战对比:VINS和ORBSLAM3在无人机避障中的表现(含实测数据)

本文通过实战测试,深度对比了VINS和ORBSLAM3两种主流视觉SLAM算法在无人机避障中的表现。测试聚焦于光照变化、动态遮挡和快速运动三大挑战,提供了详细的实测数据与性能分析。结果表明,VINS在计算效率和实时性上占优,而ORBSLAM3在定位精度和地图管理方面更稳健,为不同应用场景下的工程选型提供了清晰依据。

醉三国 627

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1572

计算两个数的平均值的三种方法

第一种方法 思路:两数相加然后除以2 参考代码: #include<stdio.h> int main() { int a = 10; int b = 20; int...

5730

四旋翼黑科技揭秘:如何利用PX4隐藏的角加速度数据提升控制性能

本文深入探讨了如何利用PX4飞控中隐藏的角加速度数据,结合增量非线性动态逆(INDI)控制方法,显著提升四旋翼无人机的控制性能。通过实战教程,指导开发者从数据订阅、INDI原理到代码实现,构建响应更快、鲁棒性更强的控制回路,有效应对突风与快速机动。

lake5的博客 720

求两个数的平均值三种方法

第一种 最常见的方法 两个数相加然后除以2获得平均值。 int ave(int x, int y) { return (x + y) &amp;gt;&amp;gt; 1; } 因为c语言中整数有存储范围, 有符号整形的范围为 -2147483648~+2147483647 无符号整形的范围为 0~4294967295 所以这种方法处理比较大的值的时候,会导致数值溢出。 ...

qq_41569992的博客 1万+

【软考高项论文】论信息系统项目管理的干系人绩效域

例如,在处理与电信运营商合作铺设光纤网络的问题时,考虑到其在通信设施建设和运维方面的专业性和重要性,我们将之定位为高权力高利益的干系人,给予了高度关注和优先沟通。项目全程,我们对干系人绩效域的执行效果进行了定期检查和评估,通过定量与定性的数据收集,确认了项目在干系人管理上的成效,具体表现为:建立了稳固的工作关系网络,使干系人普遍认可项目目标;鉴于本项目牵涉到政府各级部门、企事业单位、市民团体、技术研发伙伴等多种类型的干系人,且干系人的诉求和影响力各异,因此,有序且持续的干系人参与管理显得尤为关键。

Programming Talk 1681

【RT-DETR实战】RT-DETR实战手记(200):端侧实时目标检测,下一步往哪儿走?

昨天深夜调一个模型部署,在树莓派4B上跑RT-DETR-nano,帧率死活卡在8FPS上不去。量化也做了,算子也优化了,内存对齐也检查了,可就是离实时检测的底线还差一截。盯着终端里跳动的数字,突然意识到——我们可能正在接近当前技术路径的瓶颈。端侧实时目标检测的下一个突破口,恐怕不在现有框架的修修补补里。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 186

怎样正确求两个数的平均值?

1.先来看一个例子: int main() { int a,b,aver; scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;amp;a,&amp;amp;amp;b); aver=(a+b)/2; printf(&amp;quot;%d&amp;quot;,aver); return 0; } 写出这个程序后,大家可能会说这个程序输出的平均值不准确,小数

shanghx_123的博客 6953

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 564

C++异常 调用abort()

以一个计算两个数的调和平均数的函数为例。两个数的调和平均数的定义是:这两个数倒数的平均值的倒数,因此表达式为:1.0 * x * y / (x + y)如果y是x的负值,则上述公式将导致被零除——一种不允许的运算。对于被零除的情况,很多新式编译器通过生成一个表示无穷大的特殊浮点值来处理,cout将这种值显示为Inf、inf、INF或类似的东西;而其他的编译器肯呢哥生成在发生被零除时崩溃的程序。最好...

weixin_33714884的博客 625

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算数平均数、调和平均数、几何平均数的计算方法与应用场合

算术平均值是一个良好的集中量数,具有反应灵敏、确定严密、简明易解、计算简单、适合进一步演算和较小抽样变化的影响等特点。分为数学调和平均数(数值倒数的平均数的倒数)和统计调和平均数(计算结果与加权算术平均数完全相等)。计算总水平、总成果等所有阶段、所有环节水平、成果的连乘积总和时,求各阶段、各环节的一般水平、一般成果,要使用几何平均法计算几何平均数。又称均值,是统计学中最基本,最常用的一种平均指标,分为简单算术平均数、加权算术平均数。1、调和平均数易受极端值的影响,且受极小值的影响比受极大值的影响更大。

阿哥的专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

几种平均数

算数平均数、调和平均数、几何平均数的计算方法与应用场合 总的来说:几种平均数的应用的取决于场景 一、定义 1、算数平均数:又称均值,是统计学中最基本,最常用的一种平均指标,分为简单算术平均数、加权算术平均数。 设一组数据为X1,X2,...,Xn,简单地算术平均数的计算公式为: 加权算术平均:主要用于处理经分组整理数据。 设原始数据被分成K组,各组的组中值为X1,X2,......

stray_world的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

几何平均数和调和平均数是什么?有什么作用?详细资料讨论他们的区别

不同平均数的比较;图片来源:维基百科 大概是最常见的数据分析任务 你有一组数字。你希望用更少的数字概括它们,最好是只用一个数字。因此,你将这组数字加起来,然后除以数字的数目。哇,你得到了“平均数”,没错吧? 也许。 和流行的观点不同,从数学上说,平均数通常不是一样东西。意思是:没有可以恰当地称作“平均数”的数学运算。我们通常所说的平均数是“算术平均数”,具体计算过程如前所述。我们称其为...

q247538614的博客 1万+

用计算机求平均数怎么做,3. 利用计算器求平均数

3. 利用计算器求平均数 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分3. 利用计算器求平均数一. 填空题1. 用计算器求平均数时,打开计算器先按键_______,________,使计算器进入统计计算状态,每次按完数据后,再按键________,表示已将这个数据输入计算器.2. 计算器进入统计计算状态后, 先按 ,再按,荧光屏显...

weixin_39817347的博客 1156

时点数列序时平均数_时点数列序时平均数计算方法研究

韩 宇摘要:时点数列序时平均数的计算是统计学教学中的一个难点。解决方法是根据是否连续和间隔是否相等将时点数列分为四类,归为四象限图,不同象限采用不同方法计算。关键词:时点数列;间隔;连续;序时平均数统计学中动态数列分析法是研究社会经济现象数量方面变化的重要方法。通过动态数列的分析可以研究社会经济现象的发展速度、发展趋势,探索现象发展变化的规律,并据以进行统计预测。将不同时期的发展水平加以平均而得的...

weixin_39883286的博客 9335

几何平均数和调和平均数是什么?有什么作用?详细资料讨论

转载自:http://m.elecfans.com/article/712572.html 不同平均数的比较;图片来源:维基百科 大概是最常见的数据分析任务 你有一组数字。你希望用更少的数字概括它们,最好是只用一个数字。因此,你将这组数字加起来,然后除以数字的数目。哇,你得到了“平均数”,没错吧? 也许。 和流行的观点不同,从数学上说,平均数通常不是一样东西。意思是:没有可以恰当地称...

dongyu1703的博客 1万+

求两个数的平均数

前些天看见一个求两个数的平均数的题目,由于以前一直做嵌入式小系统,对这种奇技淫巧还是比较喜欢的,尤其是当在一些硬件受限的系统上写代码时,会有意想不到的效果。 是这样 :   int temp_a , temp_b , mid ; mid = (temp_a & temp_b) + (( temp_a ^ temp_b )>>1); 这个表达式 的正确性

Trageday的专栏 1509

调和平均数

调和平均数

qq_52060318的博客 3659

5-1-1 初试数组-计算平均数并输出所有大于平均数的数-关于平均数的double-安全隐患

如何写一个程序计算用户输入的数字的平均数? 之前讲过 3-4-2 算平均数-用-1当做截止符-while与dowhile的差别 完善之后: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = ne

hjh399的专栏 1662

统计学原理----算术平均数和调和平均数

 1.不能根据同一资料既计算算术平均数, 又计算调和平均数算术平均数和调和平均数各有自己特定的应用场合, 不能根据同一资料既计算算术平均数, 又计算调和平均数。下面通过几个有联系的实例加以说明。例1.某种蔬菜的价格, 甲市场2元/kg, 乙市场3元/kg, 现从甲乙两市场各购买1kg, 求平均价格。此情况应用算术平均数  (2+3)/(1+1)=2.5(元/kg)例2.其他条件不变

7388
上一篇: linux学习内容总结
下一篇: 集合框架
date-date
博客等级 码龄9年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值