-1

我最近在研究一种算法,我偶然发现了一个点,例如我有两个 java BigDecimal,它们的值为 -1.9997 和 -1.9989,BigDecimal 的 compareTo 方法认为 -1.9989 大于 -1.9997,在这种情况下,我希望它们是被认为是相等的,但是如果例如我有 -1.9 和 -1.86 我希望它们被认为是不同的。有没有办法在Java中做到这一点?

4

2 回答 2

4

取值之间的差异并检查它是否小于某个阈值/错误,例如

double x = -1.9997;
double y = -1.9989;
if(Math.abs(x - y) < 1e-3) // almost the same

double除非您需要 15 位或更多位的准确度,否则我个人会使用。

于 2012-04-17T07:02:48.807 回答
3

然后你应该在比较它们之前对你的数字进行四舍五入。默认比较是非常合理的。

BigDecimal price = x.scale(2, RoundingMode.HALF_UP);

此代码四舍五入为两位小数。

于 2012-04-17T07:01:05.127 回答