संभव डुप्लिकेट:
How to resolve a Java Rounding Double issueजावा में दो डबल मानों की तुलना कैसे करें?
जावा में दो दोहरे मूल्यों का एक सरल तुलना में कुछ समस्याएं पैदा करता है। आइए जावा में निम्नलिखित सरल कोड स्निपेट पर विचार करें।
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));
}
}
ऊपर कोड true
, अभिव्यक्ति ((a-b)==1.0)
के मूल्यांकन वापस जाने के लिए प्रकट होता है, लेकिन ऐसा नहीं है। यह false
देता है क्योंकि इस अभिव्यक्ति का मूल्यांकन 0.9999999999999999
है जो वास्तव में 1.0
होने की उम्मीद है जो 1.0
के बराबर नहीं है, इसलिए स्थिति बूलियन false
पर मूल्यांकन करती है। ऐसी स्थिति को दूर करने का सबसे अच्छा और सुझाए गए तरीके क्या हैं?
ऐसा इसलिए है क्योंकि युगल और फ्लोट प्रत्येक संख्यात्मक मूल्य व्यक्त नहीं कर सकते हैं। वे वास्तव में मूल्य का प्रतिनिधित्व करने के लिए अनुमान का उपयोग कर रहे हैं। – onit