जैसा कि दूसरों ने उल्लेख किया है, आप शायद BigDecimal
कक्षा का उपयोग करना चाहते हैं , यदि आप 11.4 का सटीक प्रतिनिधित्व चाहते हैं।
अब, यह क्यों हो रहा है में थोड़ा स्पष्टीकरण:
float
और double
जावा में आदिम प्रकार कर रहे हैं बिंदु चल नंबर, जहां नंबर एक अंश है और एक प्रतिपादक के एक द्विआधारी प्रतिनिधित्व के रूप में संग्रहीत किया जाता है।
विशेष रूप से, एक डबल-सटीक फ़्लोटिंग पॉइंट मान जैसे कि double
प्रकार 64-बिट मान है, जहां:
- 1 बिट संकेत (सकारात्मक या नकारात्मक) को दर्शाता है।
- घातांक के लिए 11 बिट्स।
- महत्वपूर्ण अंकों के लिए 52 बिट्स (द्विआधारी के रूप में आंशिक भाग)।
इन भागों को double
एक मूल्य का प्रतिनिधित्व बनाने के लिए संयुक्त किया जाता है ।
(स्रोत: विकिपीडिया: दोहरी परिशुद्धता )
जावा में फ़्लोटिंग पॉइंट वैल्यू को कैसे नियंत्रित किया जाता है, इसके विस्तृत विवरण के लिए, अनुभाग 4.2.3 देखें : फ़्लोटिंग-पॉइंट प्रकार, प्रारूप और जावा भाषा विनिर्देश के मान ।
byte
, char
, int
, long
प्रकार कर रहे हैं निश्चित बिंदु संख्या है, जो संख्या का सही representions हैं। निश्चित बिंदु संख्याओं के विपरीत, फ्लोटिंग पॉइंट संख्या कुछ समय ("अधिकांश समय मानने के लिए सुरक्षित") एक संख्या के सटीक प्रतिनिधित्व को वापस करने में सक्षम नहीं होती है। यही कारण है कि आप 11.399999999999
के परिणाम के रूप में समाप्त होता है 5.6 + 5.8
।
जब सही मान की आवश्यकता होती है, जैसे कि 1.5 या 150.1005, तो आप निश्चित-बिंदु प्रकारों में से एक का उपयोग करना चाहते हैं, जो कि वास्तव में संख्या का प्रतिनिधित्व करने में सक्षम होगा।
जैसा कि पहले ही कई बार उल्लेख किया जा चुका है, जावा में एक BigDecimal
वर्ग है जो बहुत बड़ी संख्या और बहुत छोटी संख्या को संभालेगा।
BigDecimal
कक्षा के लिए जावा एपीआई संदर्भ से :
अपरिवर्तनीय, मनमाना-सटीक हस्ताक्षरित दशमलव संख्या। एक BigDecimal में एक मनमाना सटीक पूर्णांक पूर्णांक रहित मान और 32-बिट पूर्णांक स्केल होता है। यदि शून्य या सकारात्मक है, तो स्केल दशमलव बिंदु के दाईं ओर अंकों की संख्या है। यदि ऋणात्मक है, तो पैमाने के नकारने की शक्ति के लिए संख्या का अनसुलझा मूल्य दस से गुणा किया जाता है। BigDecimal द्वारा दर्शाई गई संख्या का मान इसलिए (unscaledValue × 10 ^ -scale) है।
स्टैक ओवरफ्लो पर फ्लोटिंग पॉइंट नंबरों के मामले और इसकी शुद्धता से संबंधित कई सवाल किए गए हैं। यहाँ संबंधित प्रश्नों की एक सूची है जो ब्याज की हो सकती है:
यदि आप वास्तव में फ़्लोटिंग पॉइंट नंबरों के नॉटी ग्रिटि विवरण के लिए नीचे उतरना चाहते हैं, तो फ़्लोटिंग-पॉइंट अरिथमेटिक के बारे में क्या हर कंप्यूटर साइंटिस्ट को पता होना चाहिए ।