मैं Double.isFinite()
जो जावा 8 के बाद से मौजूद है के कार्यान्वयन के ऊपर देखा (क्योंकि मैं जावा 7 में कार्यक्षमता की जरूरत):Double.isFinite कार्यान्वयन विवरण - Double.MAX_VALUE की बजाय DoubleConsts.MAX_VALUE क्यों?
public static boolean isFinite(double d) {
return Math.abs(d) <= DoubleConsts.MAX_VALUE;
}
जहां DoubleConsts.MAX_VALUE
मूल्य 1.7976931348623157E308
साथ double sun.misc.DoubleConsts.MAX_VALUE
है। यह, Double.MAX_VALUE
के बराबर हो रहा है जो के रूप में परिभाषित किया गया है:
public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308
क्यों इस कार्यान्वयन के बजाय sun.misc
-package Double.MAX_VALUE
से निरंतर उपयोग करता है?
funtionality इन तरीकों पहले से sun.misc.FpUtils
में स्थित था द्वारा प्रदान की:
अच्छा प्रश्न, मैं समझूंगा कि क्या यह 'सार्वजनिक स्थैतिक अंतिम डबल MAX_VALUE = DoubleConsts.MAX_VALUE' के रूप में परिभाषित किया गया होगा; ताकि स्थिरांक सभी एक ही स्थान पर हों, लेकिन यह ... – Eugene
दिलचस्प बात यह है कि [यह लिंक] (https://alvinalexander.com/java/jwarehouse/openjdk-8/jdk/src/share/classes/sun/ Misc/DoubleConsts.java.shtml) दिखाता है कि 'DoubleConsts.MAX_VALUE' को सीधे' java.lang.Double.MAX_VALUE' के रूप में परिभाषित किया गया है। हो सकता है कि जो भी उस समारोह को लिखता है, उसने कुछ गड़बड़ कर लिया और पहले 'DoubleConsts.MAX_VALUE' संदर्भ पाया? – TripeHound
'MIN_NORMAL' का मामला मेरे लिए भी अजनबी है - 'डबल' और 'डबलकॉन्स्ट' में इस मान के लिए * अलग * शाब्दिक प्रतिनिधित्व शामिल हैं। – Hulk