2010-09-30 10 views

उत्तर

-1
new BigDecimal(myfloat) 
+4

कोई नाव निर्माता नहीं है, यह पूर्ण रूप से अपने एक डबल करने के लिए कास्टिंग जाता है, और डबल कन्स्ट्रक्टर सुरक्षित नहीं है – Alex

-2

float निर्माता का उपयोग करें:

float f = 10.0f; 
BigDecimal b = new BigDecimal(f); 
+7

कोई फ्लोट कन्स्ट्रक्टर नहीं है, यह स्वचालित रूप से एक डबल पर कास्टिंग है, और डबल कन्स्ट्रक्टर सुरक्षित नहीं है – Alex

35
BigDecimal value = new BigDecimal(Float.toString(123.4f)); 

javadocs से, स्ट्रिंग निर्माता आम तौर पर पसंदीदा तरीका एक BigDecimal में एक float कन्वर्ट करने के लिए है, क्योंकि यह से ग्रस्त नहीं है BigDecimal(double) कन्स्ट्रक्टर की अप्रत्याशितता। डॉक्स से

उद्धरण:

नोट: मान अन्य नाव और डबल NaN और इन्फिनिटी ± के लिए, यह निर्माता (मूल्यों Float.toString (नाव) और Double.toString द्वारा लौटाए के साथ संगत डबल है)। यह आमतौर पर फ्लोट या डबल को बिगडिसीमल में परिवर्तित करने का पसंदीदा तरीका है, क्योंकि यह बिगडिसीमल (डबल) कन्स्ट्रक्टर की अप्रत्याशितता से ग्रस्त नहीं है।

+4

लेकिन एक 'फ्लोट' को स्ट्रिंग में स्पष्ट रूप से परिवर्तित करने से आपको अप्रत्याशितता को स्वचालित रूप से हल करने में मदद नहीं मिलती है - आप मूल्य को सही तरीके से प्रारूपित करने की देखभाल करने की आवश्यकता है (ग्राउंडिंग ई टीसी।)। – Jesper

8

दशमलव बिंदु के बाद 3 अंक की शुद्धता के लिए: दस्तावेजों से

BigDecimal value = new BigDecimal(f, 
     new MathContext(3, RoundingMode.HALF_EVEN)); 
13
float f = 45.6f; 
BigDecimal bd = BigDecimal.valueOf(f); 

उद्धरण:

नोट: यह आम तौर पर पसंदीदा तरीका एक डबल परिवर्तित करने के लिए है (या फ्लोट) को बिगडिसीमल में, जैसा कि लौटाया गया मान उस के बराबर है जो निर्माण से होता है डबल.toString (डबल) का उपयोग करने के परिणाम से एक BigDecimal।

संदर्भ: BigDecimal (Java Platform SE 6)

+0

'Double.toString (float)' 'Float.toString (float) 'से भिन्न परिणाम उत्पन्न करता है। –

1

यह मेरा ज्ञान तक:

public static BigDecimal floatToBigDecimal(Float a){ 


    if(a == null || a.isInfinite() || a.isNaN()){ 
     return BigDecimal.ZERO; 
    } 
    try{ 
     return BigDecimal.valueOf(a); 

    }catch(Exception e){ 
     return BigDecimal.ZERO; 
    } 

} 

* नोट: यह आमतौर पर पसंदीदा तरीका के रूप में एक BigDecimal में एक डबल कन्वर्ट करने के लिए (या नाव), है लौटाया गया मूल्य बराबर होता है जिसके परिणामस्वरूप Double.toString (डबल) का उपयोग करने के परिणामस्वरूप बिगडेसिमल का निर्माण होता है।

सार्वजनिक स्थिर BigDecimal valueOf (डबल वैल)

पैरामीटर:
वैल - एक BigDecimal कन्वर्ट करने के लिए डबल।
रिटर्न:
एक बिगडिमेमल जिसका मूल्य बराबर या मूल्य के बराबर बराबर है।
फेंकता:
NumberFormatException - अगर वैल अनंत या NaN है।
के बाद से:
1,5

मैं चाहे अनंत या नहीं की जाँच कर ली एक संख्या है, ताकि वहाँ NumberFormatException की कम संभावना है कि

संबंधित मुद्दे