gpt4 book ai didi

java - double 计算中的舍入问题

转载 作者:行者123 更新时间:2023-12-01 07:56:37 25 4
gpt4 key购买 nike

    double pine = 2.5;
double alp = 2.54 - pine;
System.out.println( "alp is " + alp);
if (alp == 0.04){
System.out.println ("true");
}else{
System.out.println ("false");
}

我对编程(和这个网站)相对较新,我刚刚在尝试计算 double 值时遇到了这个问题...在上面的代码中,到目前为止,经过一天的搜索,我了解到 alp 是 0.0400000000000。 ..36 因为 double 值必须以 2 的幂来存储它们的数字...

但是,我想让上面的 if 语句打印“true”(即将 alp 视为 0.04)。我怎样才能做到这一点?

最佳答案

您可以像这样比较它们(其中精度取决于应用程序):

double pine = 2.5;
double alp = 2.54 - pine;
double precision = 0.0000001;
System.out.println( "alp is " + alp);

if (Math.abs(alp - 0.04) <= precision) {
System.out.println ("true");
}else{
System.out.println ("false");
}

或者你可以使用Java的BigDecimal类:

BigDecimal pine = new BigDecimal("2.5");
BigDecimal alp = new BigDecimal("2.54");
alp = alp.subtract(pine);
if (alp.compareTo(new BigDecimal("0.04"))) {
System.out.println ("true");
}else{
System.out.println ("false");
}

建议使用String构造函数以避免错误。

关于java - double 计算中的舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324174/

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