整数算术运算中的错误

2024-09-04 04:44
文章标签 运算 错误 整数 算术

本文主要是介绍整数算术运算中的错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 如果一个整数被零除,将不会产生正确的结果,而是出现一个异常( exception ).在Java中,异常是标志错误的一种方法,我们将在第7章中详细地介绍。对变量或表达式应用%运算符,如果右侧的操作数是零,也将导致一个异常。

    注意,如果一个整型表达式产生的值超出了结果类型的取值范围,这个结果就会按照该数据类型的存储位数截断,结果是不正确的,而且不会得到任何提示。这样处理可以确保在程序中应用的整数类型永远能够适应由计算产生的任何结果。在有些情况下,问题可能出现在中间,即使一个表达式的最终结果在合法的取值范围内,而中间的计算超出了这个范围,也会产生截断,从而得到一个错误的结果。这里举一个常见的例子,如果你使用整型,用2000000乘以100000再除以500000,若先执行乘法运算,就不会获得正确的结果,这是因为乘法的结果超出了整型所能表示的最大值。显然,要是事先知道会发生这类问题,使用一个括号,使除法先被执行,就可以防止它的发生。但是,你要记住,整数除法产生的是一个整数结果,所以,不同的执行顺序可能会产生不同的结果。

    浮点运算

    这四种基本的算术运算符+、一、*、/同样可以应用在浮点表达式中。我们可以在另一个版本的Fruit程序中进行一些试验,这个版本我们称作AverageFruit(平分水果).试试看-个平分水果

    将Fruit.java文件按照下列程序进行修改,并另存为AverageFruit.java.如果愿意的话,你可以将前面使用的新增的代码添加到程序中,是程序在结束前等待键入Enter键。

    piblic calss AverageFruitpublic static main(string[] args)
    {
    //Delare and initialize three varlables
    double numOrange=50.OE-1;
    double numApples=1.0E1;
    double averageFruit=0.0
    averageFruit=InumOranges+numApples)/2.0
    system.out.println(Atotally fruity program)
    system.out.println(Average Fruit in +averageFruit)
    }
    }

    这段代码将产生输出结果:
    A totally fruity propram
    Average fruit is 7.5

    该程序用水果的总数除以2.0来计算它的平均数。正像你所看到的,我们在程序中使用各种形式对double型变量进行初始化,把5.0写成这种形式并不是很好的方法,它只说明你可以书写一个负数指数的数值。

其他的浮点型运算符

    你可以对浮点型变量应用++或一一运算符,其效果与整数变量一样,以1.0的幅度递增或递减浮点型变量。你可以使用前缀或后缀格式,并且每种格式的操作与整数变量完全相同。我们也可以对浮点型数值应用取模运算符%.对于如下操作;
    floatoperandl%floatperand2

    其结果为floatperand1除以floatOperand2得到一个整倍数之后的浮点型余数。例如,

    表达式12.6%5.1结果为2.4

    浮点型算术运算中的错误状态

    浮点型算术运算有可能产生两种错误状态:一种是计算结果超出了取值范围:另一种是结果的数值在数学上是不确定的,比如,0除以0

    为了说明第一种错误,我们可以用一个变t记载水果(fruit)的种类数目,可以定义为:
    double fruitTypes=2.0

    然后再重新编写计算式:
    averageFruit*(numoranges+numApples)/fruitTypes;

    这样更改对其本身来说并没有什么特别的意义,但是当fruitypes为0.0时,这个程序的输出结果将是:
    A toxally fruity program
    Average  fruit is Tnfini.ty

    Infinity表示正无穷大,即大于dOUble类型所能表示的最大数值。负无穷大将输出-Infinity.实际上,你并不希望被零除,任何计算结果只要超出double类型所能表示的最大数值,就会产生这样的结果。例如。用一个非常小的数值重复进行除运算,例如,1.OE-300就会产生一个超出范围的结果。

    如果你想看看不确定数值的样子,就可以用下面这条语句替代计算averageFruat的语句:
    averageFruit={numOranges-5.0)/(numApples-10.0);

    这条语句没有什么实际意义,但它可以产生一个不确定的数值。averageFruit将输出结果NaN.这个值被称为Not-a-Number(非数字),表示不确定的数值。

    一个被赋予不确定值的变量将中断任何使用它的表达式,并且产生结果:N当用一个有穷数值与一个正无穷或负无穷数值进行加、减或乘运算时,结果还是正无穷或负无穷,但是如果你用任何有穷数值除以正无穷或负无穷数值时其结果为0.

这篇关于整数算术运算中的错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135034

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错