मैं इस तरह के कोड के एक हिस्से का उपयोग करके "2123123.12"
जैसे स्ट्रिंग मान को पार्स करने का प्रयास कर रहा हूं
String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);
लेकिन जब मैं देखता हूं कि मूल्य अगला है:
2123123.0
कोई विचार है।
अग्रिम में धन्यवाद।
1 उत्तर
Java
में, फ्लोट केवल 32 bit
नंबर स्टोर कर सकता है। यह संख्याओं को चिह्न (-/+) के लिए 1 bit
, घातांक के लिए 8 bits
और भिन्न के लिए 23 bits
के रूप में संग्रहीत करता है।
अब, अपने नंबर को देखते हुए और दशमलव भाग को प्रिंट कर लें,
System.out.println(Integer.toBinaryString(2123123));
परिणाम 23 bit
में होता है, जिसका अर्थ है कि float
में भिन्न भाग को संग्रहीत करने के लिए पर्याप्त बिट्स नहीं हैं और इसलिए, यह संख्या को छोटा कर देता है।
पूरे नंबर को स्टोर करने के लिए, आपको double
का उपयोग करना होगा जो कि जावा में 64 bit
है, जैसे:
String stringAmount = "2123123.12";
double amount = Double.parseDouble(stringAmount);
System.out.println(amount);
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।
float
का प्रयोग न करें। यह सटीकता के इतने अंकों को संग्रहीत नहीं कर सकता (केवल 6- 9)। अधिक सटीकता के लिएdouble
का उपयोग करें (15– 17), लेकिन राशियों जैसे मूल्यों के लिए, आपकोBigDecimal
का उपयोग करना चाहिए।