Loading

两个浮点数的等值判断

import java.math.BigDecimal;

/**
 * @Author: DengJia
 * @Date: 2021/9/14 16:05
 * @Description: 浮点数之间的等值判断
 */

public class Main {
    public static void main(String[] args) {
        /* 1、不可用 ==、equals 判断 */
        float a1 = 1.0f, a2 = 0.9f, a3 = 0.8f;
        float v1 = a1 - a2, v2 = a2 - a3;
        System.out.println(v1 == v2); // false
        System.out.println(Float.valueOf(v1).equals(v2)); // false

        /* 2、小于指定的一个误差范围视为相等 */
        float diff = 1e-6f; // 设定一个误差范围
        System.out.println(Math.abs(v1 - v2) < diff); // true

        /* 3、使用 BigDecimal 定义浮点值,再进行比较 */
        BigDecimal b1 = new BigDecimal("1.0"), b2 = new BigDecimal(".9"), b3 = new BigDecimal(".8");
        BigDecimal s1 = b1.subtract(b2), s2 = b2.subtract(b3);
        System.out.println(s1.compareTo(s2) == 0); // true
    }
}

posted @ 2021-09-14 16:27  溫柔の風  阅读(87)  评论(0编辑  收藏  举报