double
देखना केवल सटीकता के 15/16 अंक होते हैं और जब आप इसे एक नंबर यह का प्रतिनिधित्व नहीं कर सकते हैं (जो समय के सबसे अधिक है, देना भी 0.1 है सटीक नहीं) यह निकटतम प्रतिनिधित्व करने योग्य संख्या लेता है।
यदि आप 9999999999999999
बिल्कुल प्रतिनिधित्व करना चाहते हैं, तो आपको BigDecimal का उपयोग करने की आवश्यकता है।
BigDecimal bd = new BigDecimal("9999999999999999");
System.out.println(new DecimalFormat("#.##").format(bd));
प्रिंट
9999999999999999
बहुत कम असली दुनिया की समस्याओं इस सटीकता की आवश्यकता है क्योंकि आप कुछ भी इस आकलन नहीं कर सकते सही रूप में वैसे भी। यानि प्रति क्विंटिलियन के 1 भाग की त्रुटि के लिए।
आप
// search all the powers of 2 until (x + 1) - x != 1
for (long l = 1; l > 0; l <<= 1) {
double d0 = l;
double d1 = l + 1;
if (d1 - d0 != 1) {
System.out.println("Cannot represent " + (l + 1) + " was " + d1);
break;
}
}
प्रिंट
Cannot represent 9007199254740993 was 9.007199254740992E15
सबसे बड़ा प्रदर्शनीय पूर्णांक 9007199254740992 है, क्योंकि यह एक कम बिट
स्रोत
2012-01-18 09:21:33
(इसके भी रूप में) की जरूरत के साथ सबसे बड़ा प्रदर्शनीय पूर्णांक प्राप्त कर सकते हैं फ्लोटिंग पॉइंट अंकगणित --- 1 9 85 से कंप्यूटर विज्ञान का सबसे बड़ा रहस्य – subsub