मैं इस तरह के कोड के एक हिस्से का उपयोग करके "2123123.12" जैसे स्ट्रिंग मान को पार्स करने का प्रयास कर रहा हूं

String stringAmount = "2123123.12";
float amount = Float.parseFloat(stringAmount);

लेकिन जब मैं देखता हूं कि मूल्य अगला है:

2123123.0

कोई विचार है।

अग्रिम में धन्यवाद।

-1
csuazo 24 मार्च 2017, 23:53
2
float का प्रयोग न करें। यह सटीकता के इतने अंकों को संग्रहीत नहीं कर सकता (केवल 6- 9)। अधिक सटीकता के लिए double का उपयोग करें (15– 17), लेकिन राशियों जैसे मूल्यों के लिए, आपको BigDecimal का उपयोग करना चाहिए।
 – 
Andreas
25 मार्च 2017, 00:07

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);
1
Darshan Mehta 25 मार्च 2017, 00:10