2009-09-20 13 views

उत्तर

48

0.01 एक पूर्णांक (पूर्ण संख्या) नहीं है, इसलिए आप निश्चित रूप से इसे एक के रूप में पार्स नहीं कर सकते हैं। इसके बजाय Double.parseDouble या Float.parseFloat का उपयोग करें।

65
String s = "0.01"; 
double d = Double.parseDouble(s); 
int i = (int) d; 

अपवाद का कारण यह है कि एक पूर्णांक में तर्कसंगत संख्या (= मूल रूप से भिन्नता) नहीं होती है। तो, एक int में 0.3 पार्स करने का प्रयास बकवास है। ए double या float डेटाटाइप तर्कसंगत संख्या रख सकता है।

रास्ता जावा एक एक int को double शून्य की ओर गोलाई से दशमलव विभाजक के बाद वाले हिस्से को हटाने द्वारा किया जाता है डाले।

int i = (int) 0.9999; 

i शून्य से होगा।

+2

आपकी कास्ट पूरी तरह से आंशिक जानकारी खो देगी। मुझे यकीन नहीं है कि सलाह देना एक अच्छा विचार है। – Joren

+1

ठीक है! शायद मुझे ऐसा कुछ करना होगा जैसे डबल डी = डबल .parseDouble (ओं); सही? –

+1

@ जोरेन: मुझे पता है लेकिन वह एक इंटीजर चाहता है (अगर मैं उसका कोड जांचता हूं) –

2

Double.parseDouble(String a) का उपयोग करें जो आप खोज रहे हैं वह पूर्णांक नहीं है क्योंकि यह पूरी संख्या नहीं है।

18

का प्रयोग करें,

String s="0.01"; 
int i= new Double(s).intValue(); 
2

उपयोग इस एक

int number = (int) Double.parseDouble(s);

7

रूपांतरण इस प्रकार का वास्तव में जावा

में

उदाहरण के लिए एक निम्न स्ट्रिंग ले लो आश्चर्यजनक unintuitive है: " 100.00 "

सी: एक सरल मानक पुस्तकालय समारोह में कम से कम के बाद से 1971 (Where did the name `atoi` come from?)

int i = atoi(decimalstring); 

जावा: डबल द्वारा अनिवार्य पारित होने (या फ्लोट) को पार्स, एक डाली

int i = (int)Double.parseDouble(decimalstring); 
द्वारा पीछा किया

जावा निश्चित रूप से कुछ आबादी है इसकी आस्तीन

+0

सी बस स्ट्रिंग के बाकी हिस्सों को अनदेखा करता है, और जो कुछ भी पार्स कर सकता है उसे पार्स करें (इस मामले में, यह '100' है)।आपके लिए यह जानने का कोई तरीका नहीं है कि 'atoi' वास्तव में स्ट्रिंग में सबकुछ पार्स किया गया है या नहीं, चाहे स्ट्रिंग में संख्या हो या संख्या उस प्रकार से बहती है या नहीं। 'strtol' एक बेहतर विकल्प है जहां उपर्युक्त सभी चीजों का पता लगाया जा सकता है। जावा कठोर है, लेकिन यह सुनिश्चित करता है कि उन सभी मामलों को कवर किया गया है। – nhahtdh

+0

मैं रेवेल के साथ सहमत हूं क्योंकि यह 'Double.valueOf ("16543") काम करता है। IntValue();' इसलिए जब आप जल्दी से int में परिवर्तित करना चाहते हैं तो जावा एक पिटा बनना चाहता है, फिर भी डबल बहुत सामान्य है। –

2

गोल करने के लिए बिगडेसिमल का उपयोग करना:

String s1="0.01"; 
int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact(); 

String s2="0.5"; 
int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact(); 
संबंधित मुद्दे