相关疑难解决方法(0)

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

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

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

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

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

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

java equality floating-accuracy

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

为什么指定BigDecimal.equals分别比较值和比例?

这不是关于如何比较两个BigDecimal对象的问题 - 我知道你可以使用compareTo而不是equals这样做,因为equals记录为:

与compareTo不同,此方法仅考虑两个BigDecimal对象的值和比例相等(因此通过此方法比较时2.0不等于2.00).

问题是:为什么equals以这种看似违反直觉的方式指定了?也就是说,为什么能够区分2.0和2.00 很重要

似乎必须有这样的理由,因为Comparable指定compareTo方法的文档指出:

强烈建议(尽管不要求)自然排序与equals一致

我想必须有一个很好的理由忽略这个建议.

java bigdecimal

33
推荐指数
5
解决办法
1万
查看次数

在JAVA中读取列表时我们可以使用.contains(BigDecimal.ZERO)吗?

在JAVA中读取列表时,我们可以使用.contains(BigDecimal.ZERO)吗?

我在尝试:

    if (selectPriceList.contains(BigDecimal.ZERO)) {
        return true;
    }
    return false;
Run Code Online (Sandbox Code Playgroud)

但它总是返回错误.

这似乎有效,但需要纠正吗?

    BigDecimal zeroDollarValue = new BigDecimal("0.0000");
    if (selectPriceList.contains(zeroDollarValue)) {
        return true;
    }
    return false;
Run Code Online (Sandbox Code Playgroud)

java contains bigdecimal

4
推荐指数
1
解决办法
1235
查看次数

为什么我的BigDecimal 0.0000不等于BigDecimal.ZERO?

我在Android Java中有以下表达式:

myVar + " == 0 ? " + BigDecimal.ZERO.equals(myVar)
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

0.0000 == 0 ? false
Run Code Online (Sandbox Code Playgroud)

在哪里myVar声明:

public BigDecimal myVar;
Run Code Online (Sandbox Code Playgroud)

并且Gson从服务的JSON数据中成功分配(我检查了这个以验证JSON是否良好). 为什么0.0000作为一个BigDecimal不相等BigDecimal.ZERO

java android bigdecimal

1
推荐指数
1
解决办法
1246
查看次数