码迷,mamicode.com
首页 > 其他好文 > 详细

2021_2_18_浮点数拓展

时间:2021-02-19 13:49:06      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:判断   sys   而在   big   不同的   拓展   rgs   class   double   

浮点数中的常见问题

public class FloatAndDouble {
    public static void main(String[] args) {
        float num1 = 0.1F;
        double num2 = 1.0/10;

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num1 == num2); //输出判断num1是否等于num2
    }
}

//        0.1
//        0.1
//        false

这段程序中看出相同数值的float和double被判断为不相等

另外,

public class FloatAndDouble {
    public static void main(String[] args) {
        float num1 = 1312341312314123123F;
        double num2 = num1 + 1;

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num1 == num2); //输出判断num1是否等于num2
    }
}

//        1.31234134E18
//        1.31234134478553088E18
//        true

而在这段程序中明显不同的num1和num2竟然被判断为相等。

那么,这是为什么呢?

因为float浮点数类型对小数的表达式有限、离散、近似的。因此,它的值有舍入误差,是一个大约的,接近真实数值却不等于真实值的值。

因此,最好完全避免使用浮点数进行比较。(比大小,判断是否相等)

在需要比较小数数值时,可以使用类BigDecimal (数学工具类)

2021_2_18_浮点数拓展

标签:判断   sys   而在   big   不同的   拓展   rgs   class   double   

原文地址:https://www.cnblogs.com/cutomorrowsmile/p/14413075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!