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

标签 java android bigdecimal

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

myVar + " == 0 ? " + BigDecimal.ZERO.equals(myVar)

输出如下:

0.0000 == 0 ? false

myVar 声明为:

public BigDecimal myVar;

并成功分配Gson ,来自提供的 JSON 数据(我对此进行了检查以验证 JSON 是否良好)。 为什么 0.0000 作为 BigDecimal 不等于 BigDecimal.ZERO

最佳答案

来自 the documentation :

Returns true if x is a BigDecimal instance and if this instance is equal to this big decimal. Two big decimals are equal if their unscaled value and their scale is equal. For example, 1.0 (10*10-1) is not equal to 1.00 (100*10-2). Similarly, zero instances are not equal if their scale differs.

他们为什么这样决定?可能是因为它更容易实现。这是一个好的决定吗?我不这么认为,但事实就是如此。如果您不喜欢,请使用其他库。

关于java - 为什么我的 BigDecimal 0.0000 不等于 BigDecimal.ZERO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31688290/

相关文章:

java - Primefaces 5.0 数据滚动和分页

java - 在 TreeSet 中查找包含前缀的条目

java - Java中简单多线程程序的奇怪问题

android - Google Api 刷新 token 说明

Java 将字符串转换为 BigDecimal

java - 如果 url 有连字符,在 android 中无法从服务器获取数据

java - 更新recyclerView

android - 如何截取 Android 的 Surface View 的屏幕截图?

java - Java 中的大十进制错误

java - 数字与分数相乘