Double和Float类型的max、min、isNaN、isFinite、isInfinite方法
本文以Double为例,Float是相同的
普通的浮点计算
System.out.println(5 / 2); //2
System.out.println(5.0 / 2); //2.5 浮点数和整数进行运算时,会将整数自动提升为浮点型
Double对POSITIVE_INFINITY 、NEGATIVE_INFINITY 、NaN 的定义:
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
public static final double NaN = 0.0d / 0.0;
浮点数比较大小
浮点数计算建议使用BigDecimal,如果仅仅是比较大小,可以使用Double.min和Double.max方法
System.out.println(Double.max(1.3,1.3000000001)); //1.3000000001
System.out.println(Double.min(1.3,1.3000000001)); //1.3System.out.println(0.7-0.6); //0.09999999999999998
System.out.println(Double.min(0.7-0.6,0.1)); //0.09999999999999998
System.out.println(new BigDecimal(String.valueOf(0.7)).subtract(new BigDecimal(String.valueOf(0.6))));//0.1
NAN:not a number不是一个数字
Double num = Double.NaN;
System.out.println(0.0 / 0); //NAN:不是一个数
System.out.println(Double.NaN == Float.NaN);//false
System.out.println(Double.NaN == Double.NaN);//false
System.out.println(Double.isNaN(0.0 / 0));//true
INFINITY:无穷大
Double.isInfinite方法用于判断参数是否正无穷大或负无穷大。
Double.isFinite方法:用于判断参数是否是有限数字,如果参数是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
System.out.println(1.0 / 0);//Infinity:正无穷大
System.out.println(1.0 / 0);//Infinity:正无穷大
System.out.println(1 / -0.0);//-Infinity:负无穷大
System.out.println(-1 / 0.0);//-Infinity:负无穷大//整数0会自动提升浮点数,因此不会报空指针异常
System.out.println(Double.isInfinite(1.0/ 0));//结果为:true
System.out.println(Double.isInfinite(1 / -0.0));//结果为:true
System.out.println(Double.isFinite(1 / 0.0));//结果为:false
System.out.println(Double.isFinite(1 / -0.0));//结果为:false
注意:
System.out.println(Double.isNaN(Double.POSITIVE_INFINITY));//false
System.out.println(Double.isFinite(Double.NaN));//false
Double和Float类型的max、min、isNaN、isFinite、isInfinite方法相关推荐
- 关于double和float类型的转换
也就是说,我们只要写小数,就被认为是double类型 但是如果想要使用float类型的那么就要在后面加一个F double d = 3.14;//float f = 3.14;//错,3.14认为自己 ...
- c/c++ max/min 4种实现方法
参考:https://blog.csdn.net/a_ran/article/details/74911031 1. 简单的宏实现 #define max(a,b) (((a) > (b)) ? ...
- C语言 printf 打印double、float类型
#include <stdio.h> //库头文件/******************************************************************** ...
- Java中如何解决double和float精度不准的问题
我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算, ...
- 支付价格计算中精度问题之double,float
前言 前段时间开发新的微信小程序,借此机会将老掉牙的支付模块重构,并且支持现金支付(之前都是虚拟币支付),在重构期间遇到计算上的一些精度问题,虽然数额影响非常小但是影响比较大,我觉得有必要总结以下遇到 ...
- mysql double 精度_Double类型精度问题引起的错误
场景说明 研发同事让把某个double类型字段的值四舍五入保留2位小数,mysql中round(col,2)可以实现四舍五入并且保留2位小数,但是神奇的事情发生了:发现有的四舍五入是正确的,而有的不是 ...
- android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?
出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...
- String和包装类Integer\Double\Long\Float\Character 都是final类型
String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变 转载于:https://www.cnblogs.com/qq ...
- int和long类型取值范围。 基本数据类型 byte , short , char ,int , long , float ,double,boolean类型取值范围
int和long类型取值范围. 1. int类型 ---------4字节(32位) ------------------------------------------------------- ...
最新文章
- 【c语言】判断一个数是否为素数
- 用ruby的net/ssh链接远程的服务器
- linux下cmake命令行,深入理解CMake(1): CMake命令行参数
- Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)
- 2 中间件的使用、异步action的创建
- alt复制选区就会卡 ps_PS入门视频教程笔记整理(二)工具栏介绍一
- Android静态代码扫描效率优化与实践
- 解决firefox字体发虚的问题
- pytorch 实现MLP(多层感知机)
- 在ASP.NET Identity 2.0中使用声明(Claims)实现用户组
- selenium 验证码_selenium自动化测试之验证码处理
- Lync Server 2013 标准版部署(十)边缘服务器部署[三]
- Web渗透测试实战:基于Metasploit 5.0
- [百晓生]-鼠标右键新建添加RTF文档
- JavaScript模拟出一个input用于添加本地文件
- 关于单精度浮点型精确位数7~8以及双精度浮点型精确位数15~16的解释
- 从因果关系来看小样本学习
- [分享]iOS开发 - 网络总结
- imx6q项目:使用psplash制作开机动画
- 搜索引擎优化SEO初探
热门文章
- 机器学习在网络安全领域的应用(二)
- Java并发编程模拟管程(霍尔Hoare管程、汉森Hansan管程、MESA管程)
- A pseudo attribute name is expected.解决方法
- 想玩IEO又怕跑得慢?LBank的“锁仓释放”了解下
- 世界首款前置前驱混动8挡自动变速器山东潍坊问世
- java 几种生成海报的方式
- 华为手机如何把计算机添加到桌面,华为手机一键锁屏添加桌面快捷方式的操作步骤...
- vue-cli 项目启动输出 INFO Starting development server... 69o/o after emitting CopyPlugin
- 职场语录:新人,没人会告诉你的职场潜规则
- DesignWare USB 2.0 OTG Controller (DWC_otg) Device Driver File List