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");
}
我对编程(和这个网站)相对较新,我只是遇到了这个问题,试图计算双值...在上面的代码中,到目前为止,搜索的一天,我知道alp是0.0400000000000。 ..36因为双值必须用2的幂来存储它们的数字......
但是,我想这样做,以便上面的if语句打印“true”(即将alp视为0.04)。我怎样才能做到这一点?
答案 0 :(得分:3)
您可以像这样比较它们(precision
取决于应用程序):
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
构造函数以避免错误。
答案 1 :(得分:1)
试试这个:
double pine = 2.5;
double alp = 2.54 - pine;
alp = Math.round(alp * 100.0) / 100.0;
System.out.println( "alp is " + alp);
if (alp == 0.04) {
System.out.println ("true");
} else {
System.out.println ("false");
}
答案 2 :(得分:1)
待办事项
...
if(Math.abs(alp - 0.04) < 0.0000000001){//some really small number
System.out.println("true");
}
...
答案 3 :(得分:1)
您可以使用DecimalFormat并设置预期的格式。或者像其他人建议的那样,使用BigDecimal类。
DecimalFormat newFormat = new DecimalFormat("#.##");
double pine = 2.5;
double alp = Double.valueOf(newFormat.format(2.54 - pine));
System.out.println( "alp is " + alp);
if (alp == 0.04){
System.out.println ("true");
}else{
System.out.println ("false");
}