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