thể trùng lặp:
How to resolve a Java Rounding Double issueLàm thế nào để so sánh hai giá trị kép trong Java?
Một so sánh đơn giản của hai giá trị tăng gấp đôi trong Java tạo ra một số vấn đề. Hãy xem xét đoạn mã đơn giản sau đây trong Java.
package doublecomparision;
final public class DoubleComparision
{
public static void main(String[] args)
{
double a = 1.000001;
double b = 0.000001;
System.out.println("\n"+((a-b)==1.0));
}
}
Đoạn mã trên dường như trở true
, đánh giá của biểu thức ((a-b)==1.0)
nhưng nó không. Nó trả về false
thay vì vì việc đánh giá biểu thức này là 0.9999999999999999
thực tế được mong đợi là 1.0
, không bằng 1.0
do đó, điều kiện đánh giá là boolean false
. Cách tốt nhất và được đề xuất để vượt qua tình huống như thế nào?
Điều này là do đôi và nổi không thể diễn tả mọi giá trị bằng số. Họ đang thực sự sử dụng xấp xỉ để đại diện cho giá trị. – onit