相关疑难解决方法(0)

使用==比较Java中的浮点数有什么问题?

根据这个java.sun页面 ==是Java中浮点数的相等比较运算符.

但是,当我输入以下代码时:

if(sectionID == currentSectionID)
Run Code Online (Sandbox Code Playgroud)

进入我的编辑器并运行静态分析,我得到:"JAVA0078浮点值与==相比"

使用==比较浮点值有什么问题?这样做的正确方法是什么? 

java equality floating-accuracy

170
推荐指数
10
解决办法
15万
查看次数

使用java在浮点值中丢失精度

给出下面的测试代码及其输出.当我从数值获得浮点值时,精度会丢失..任何人都可以告诉我为什么这种行为以及如何处理这个问题?

public static void main(String[] args)
    {
        try
        {
            java.lang.Number numberVal = 676543.21;
            float floatVal = numberVal.floatValue();
            System.out.println("Number value    : " + numberVal);
            System.out.println("float value     : " + floatVal);
            System.out.println("Float.MAX_VALUE : " + Float.MAX_VALUE);
            System.out.println("Is floatVal > Float.MAX_VALUE ? " + ( floatVal > Float.MAX_VALUE));
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出:

    Number value    : 676543.21
    float value     : 676543.2
    Float.MAX_VALUE : 3.4028235E38
    Is floatVal > Float.MAX_VALUE ? false
Run Code Online (Sandbox Code Playgroud)

为什么浮点值小于Float.MAX_VALUE?

java floating-point

3
推荐指数
3
解决办法
2万
查看次数