2012-05-17 6 views
27

मेरे कोड नमूना:मैं ठीक से कैसे उपयोग करते हुए विभाजित कर सकते हैं BigDecimal

import java.math.*; 

public class x 
{ 
    public static void main(String[] args) 
    { 
    BigDecimal a = new BigDecimal("1"); 
    BigDecimal b = new BigDecimal("3"); 
    BigDecimal c = a.divide(b, BigDecimal.ROUND_HALF_UP); 
    System.out.println(a+"/"+b+" = "+c); 
    } 
} 

परिणाम है: 1/3 = 0

क्या मैं गलत कर रहा हूँ?

+1

क्षमा करें, लेकिन यह मुझे के रूप में "सवाल बहुत छोटा था" इसके बिना पोस्ट करने के लिए अनुमति नहीं होगी। –

+0

आपका परिणाम सही है। एक तिहाई,, निकटतम पूर्णांक तक गोल ऊपर गोलाई से संबंधों को तोड़ने, वास्तव में एक फ्लैट, गोल शून्य है। –

+0

तो अगर मुझे 0.33333333 की आवश्यकता है? मुझे 1 से 3 को विभाजित करने के लिए कैसे करना है? –

उत्तर

51

आप havent परिणाम के लिए पैमाने निर्दिष्ट। कृपया इसे

import java.math.*; 

    public class x 
    { 
     public static void main(String[] args) 
     { 
     BigDecimal a = new BigDecimal("1"); 
     BigDecimal b = new BigDecimal("3"); 
     BigDecimal c = a.divide(b,2, BigDecimal.ROUND_HALF_UP); 
     System.out.println(a+"/"+b+" = "+c); 
     } 
    } 

यह परिणाम 0.33 के रूप में देगा। कृपया पढ़ें Lorem ipsum के बारे में API

रोहन

+0

मैं 1.5 एपीआई देख रहा था जिसमें 'divite (सिग्डेसिमल, int, int) 'की कमी है ... –

+0

जनवरी मेरी पोस्ट में लिंक 1.5 एपीआई के लिए है। विभाजन (बिगडिसीमल डिवीजर, इंट स्केल, इंट राउंडिंग मोड) अब कुछ समय से आसपास रहा है, मुझे विश्वास है। –

1

तैरता का उपयोग कर, "1.0" तरह BigDecimal रों बनाएं; कम से कम संख्यात्मक, यदि आप दशमलव परिणाम चाहते हैं।

+0

' BigDecimal c = a.setScale (5) .divide (ख, BigDecimal.ROUND_HALF_UP) है? क्या यह बेहतर किया जा सकता है? –

+0

@JanAjan हां, यही शायद एक बेहतर तरीका है। –

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