Java学习之分母为零分子为float或者double类型结果为Infinity的原因
开始在遇到这种情况之后一直觉得很奇怪,你说分母为0,分子为int类型或者char或者long或者short类型的数据得到的结果为异常
Exception in thread "main" java.lang.ArithmeticException: / by zero
但是为什么分子为float类型或者double类型的数据结果就是Infinity呢?
先上代码:
public class HelloWorld {public static void main(String args[]) {try {double m = 3.14/0;float n = (float) (325.14/0);System.out.println("float类型的结果为:"+n);System.out.println("double类型的结果为:"+m);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}
输出结果为:
float类型的结果为:Infinity
double类型的结果为:Infinity
这是为什么呢:为什么会是无穷大呢?
原来,在计算机中的0是使用的一个非常接近于0的小数来表示的,在整除整数时,除数0为整数,故而违反了数学定义,会出错,而在被除数为float或者double时,此时的除数0为一个非常接近于0的小数但却并非为0,故而结果为无穷大,因此结果为Infinity。
从以下可以看出在计算机中0是一个无限接近于0的小数
public class HelloWorld {public static void main(String args[]) {try {// double m = 3.14/0;
// float n = (float) (325.14/0);
// System.out.println("float类型的结果为:"+n);
// System.out.println("double类型的结果为:"+m);int s = 20;System.out.println(s/0f);System.out.print(s/0d);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}
}
结果为
Infinity
Infinity
是不是感觉很奇妙?
Java学习之分母为零分子为float或者double类型结果为Infinity的原因相关推荐
- 【JAVA学习】1、零基础入门Java 基础语法:概念、规则、格式
[JAVA学习]1.零基础入门Java 基础语法 前言 JAVA开发环境选择 Java 基础概念 Java 标识符 Java修饰符 基础代码模板框架 命名规则 基础规则 后端开发规则 代码格式 前言 ...
- java的int、char、long、float、double对byte的转换,在通信的时候会用到
/** * java的int.char.long.float.double对byte的转换,在通信的时候会用到 * <ul> * <li>文件名称: com.born.util ...
- java里short,int,long,float,double范围及可写位数
一.取值范围 1.int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方) 最大值:Intege ...
- Java入门之7:Java中的float和double类型的浮点数是怎么按照IEEE 754标准存储的?
前言: 这篇博文,我写了好几天--,里面涉及的基础概念比较多,内容比较多,举例也比较多,想搞清楚明白就难免 我自己都会觉得啰嗦,我整理了目录出来,看完需要一点时间,可以自行根据需要.感兴趣的 选择阅读 ...
- Java学习笔记10(零压力理解继承多态权限修饰符)
文章目录 继承 方法的重写(override) 四种访问权限修饰符: 关键字super 类对象的实例化的底层原理 多态 instanceof操作符 object类 继承 继承是Java最重要的,类之间 ...
- Java学习之旅(三四):包装类之 Double
Double 和 Float 包装类是对 double.float 基本类型的封装,它们都是 Number 类的子类,又都是对小数进行操作,所以常用方法基本相同.Double 类在对象中包装一个基本类 ...
- Java中short、int、long、float、double的取值范围
一.基本数据类型的特点,位数,最大值和最小值. 1. 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15 ...
- java中float和double型数据在赋值时有哪些注意事项?,java语言中float和double类型的数据在编程时的注意事项...
float和double类型的数据在编程时的需要注意的地方 package execisetest; public class AccuranceTest { public static vo ...
- java学习 day01_basic
①初识Java 文章目录 ①初识Java 1. Java历史 1.1 Java语言的诞生 1.2 Java语言的发展历程 2. Java主要用途 3. JDK和JRE 4. Java程序的运行原理 5 ...
最新文章
- Android Fragment 基本介绍
- zookeeper源码分析之五服务端(集群leader)处理请求流程
- Oracle数据块原理深入剖析
- ios mysql 创建不同的用户表_iOS中数据库-创建表-增删改查数据-基础语法
- HDUOJ---1879 继续畅通工程
- 2021中国企服企业规模化获客体系建设指南
- 测试学python路线_小蜗分享:Python测试开发全套学习路线
- 【报告分享】2022中国人工智能人才培养报告.pdf(附下载链接)
- 【Java】 环境变量如何配置?
- 好淘客饿了么返利系统-外卖返利优惠券系统-支持美团、饿了么的外卖和商超/电影票 支持多级代理返利
- echarts三维建筑地图注解
- Content type ‘application/json;charset=UTF-8‘ not supp...
- Hyperledger Fabric 2.3环境配置搭建指南及BUG记录
- AudioToolbox使用方法总结
- 会声会影如何修整剪辑视频素材
- 【IoC 和 DI 有什么区别】
- 基于PHP的租赁商城系统(包括数据库和后台)
- 第6章第9节:幻灯片背景:使用纹理和图像作为幻灯片的背景 [PowerPoint精美幻灯片实战教程]
- arcgis使用arcpy计算土地利用LUCC变化转移矩阵、马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计
- 51CTO稿酬标准2016版正式发布!
热门文章
- Z-Wave Association Basics ZWAVE设备之间的本地关联
- 举家搬到西雅图,就为了去 Amazon,值得吗?
- iOS开发-停止WebView播放视频/音频 1
- 企业申请增值电信业务许可证icp许可证应具备哪些条件
- Flex 4 皮肤设计资料
- 日程管理APP的测试计划和测试矩阵
- 全球及中国无钥匙启动系统芯片行业研究及十四五规划分析报告
- bt30与bt40哪个好_小型加工中心BT30,BT40,NT30有什么区别?
- MySQL——统计函数count,合计函数sum,(avg,max,min)函数
- pkpm弹性时程分析计算书怎么出_核电站环行起重机轮压时程分析