gpt4 book ai didi

java - 为什么 BigDecimal ("5.50")不等于 BigDecimal ("5.5")以及如何解决这个问题?

转载 作者:IT老高 更新时间:2023-10-28 20:34:44 25 4
gpt4 key购买 nike

其实我已经找到了可能的解决方案

//returns true
new BigDecimal("5.50").doubleValue() == new BigDecimal("5.5").doubleValue()

当然,它可以通过 Math.abs (v1 - v2) < EPS 来改进为了使比较更加稳健,但问题是这种技术是否可以接受还是有更好的解决方案?

如果有人知道为什么 java 设计者决定以这种方式实现 BigDecimal 的 equals,那么阅读起来会很有趣。

最佳答案

来自 BigDecimal 的 javadoc

equals

public boolean equals(Object x)

Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimal objects equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by this method).

只需使用 compareTo() == 0

关于java - 为什么 BigDecimal ("5.50")不等于 BigDecimal ("5.5")以及如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com