java如何对两个浮点数的大小进行对比呢?
下文笔者讲述使用java代码对浮点数进行比较的方法分享,如下所示
浮点数简介
浮点数采用“尾数+阶码”的编码方式
类似于科学计数法的“有效数字+指数”
表示方式
所以我们无法采用 == 的方式对其进行判断
那么如何对浮点数进行判断呢?
下文笔者将一一道来,如下所示
例
float a = 1.0f - 0.9f; float b = 0.9f - 0.8f; System.out.println(a == b); ---运行以上代码,将输出以下信息----- false float a = 1.0f - 0.9f; float b = 0.9f - 0.8f; Float x = Float.valueOf(a); Float y = Float.valueOf(b); System.out.println(x.equals(y)); ---运行以上代码,将输出以下信息----- false那么如何进行比较呢?
使用差值范围比较
float a = 1.0f - 0.9f;
float b = 0.9f - 0.8f;
float diff = 1e-6f;
if(Math.abs(a-b) < diff){
System.out.println("true");
}
---运行以上代码,将输出以下信息-----
true
笔者建议使用BigDecimal定义--然后进行比较
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
BigDecimal c = new BigDecimal("0.8");
BigDecimal x = a.subtract(b);
BigDecimal y = b.subtract(c);
System.out.println(x.equals(y));
---运行以上代码,将输出以下信息-----
true
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


