如何比较BigDecimal,但大约?

时间:2016-06-27 17:12:11

标签: java android

我有这段代码:

startRendering()

其中Expression.PI被舍入为小数点后100位。

但是我不需要比较d是否等于pi,最多100个小数,但只允许说最多20个小数。换句话说,如何检查d是否大约等于pi?

我试过

BigDecimal d = ...;
if (d.compareTo(Expression.PI) == 0) {
    //do something
}

Expression.PI.setScale(20, RoundingMode.HALF_UP).compareTo(d.setScale(20, RoundingMode.HALF_UP)) == 0;

但这两个似乎都不起作用。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

正如lucasvw在评论中提到的那样,我认为你已经正确地做到了这一点,并且你的“' d”一定存在问题。值。这是一个显示正确结果的测试类。

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalTest {

public static void main(String args[]) {
    BigDecimal PI = new BigDecimal("3.14159265358979323846264338327950288419");
    BigDecimal otherValue = new BigDecimal("3.14159");

    boolean test = PI.setScale(5, RoundingMode.HALF_UP).compareTo(otherValue) == 0;

    System.out.println("compareTo: " + test);
}
}