gpt4 book ai didi

java - 如何比较BigDecimal,但大约?

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:48 27 4
gpt4 key购买 nike

我有这个代码:

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

其中 Expression.PI 是四舍五入到小数点后第 100 位的圆周率。

但我不需要比较 d 是否等于 pi 最多 100 位小数,但只说最多 20 位小数。换句话说,如何判断d是否约等于pi?

我试过了

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

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

但是这两个好像都不行。我在这里做错了什么?

最佳答案

正如 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);
}
}

关于java - 如何比较BigDecimal,但大约?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059596/

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