我有这段代码:
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;
但这两个似乎都不起作用。我在这里做错了什么?
答案 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);
}
}