Olası Çoğalt:
How to resolve a Java Rounding Double issueJava'da iki çift değer nasıl karşılaştırılır?
Java iki çift değerlerin basit bir karşılaştırma bazı sorunlar yaratır. Java'da aşağıdaki basit kod snippet'ini düşünelim.
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));
}
}
Yukarıdaki kod true
, ifade ((a-b)==1.0)
değerlendirmesini dönmek görünüyor ama öyle değil. Bunun yerine false
döndürür, çünkü bu ifadenin değerlendirilmesi 1.0
olan ve 1.0
için eşit olması beklenen 0.9999999999999999
olduğundan, koşul false
boolean olarak değerlendirilir. Böyle bir durumun üstesinden gelmenin en iyi ve önerilen yolu nedir?
Bunun nedeni, ikilinin ve şamandıranın her sayısal değeri ifade edememesidir. Değeri temsil etmek için gerçekten yaklaşımı kullanıyorlar. – onit