2013-12-17 2 views
6

हर बार जब मैं अपने assertEquals चलाता हूं, मेरी उम्मीद है कि BigDecimal गोल किया जा रहा है जो इसे विफल करने का कारण बनता है। मैं कैसे सुनिश्चित कर सकता हूं कि यह गोल न हो या कोई और तरीका न हो?जुनीट assertEquals में गोल करने से BigDecimal कैसे बल?

@Test 
public void test() { 
    BigDecimal amount = BigDecimal.valueOf(1000); 
    BigDecimal interestRate = BigDecimal.valueOf(10); 
    BigDecimal years = BigDecimal.valueOf(10); 
    InterestCalculator ic = new InterestCalculate(amount, interestRate, years); 
    BigDecimal expected = BigDecimal.valueOf(1321.507369947139705200000); 
    assertEquals(expected, ic.getMonthlyPaymentAmount()); 
} 
+0

ऐसा नहीं लगता कि यह एक सटीक डुप्लिकेट है, दूसरे प्रश्न ने पूरे स्थान पर .doubleValue() को कॉल किया था। –

उत्तर

19

इसे उद्धरण चिह्नों में रखें और BigDecimal कन्स्ट्रक्टर का उपयोग करें।

BigDecimal expected = new BigDecimal("1321.507369947139705200000"); 

यदि आप ऐसा नहीं करते हैं, तो नंबर एक double के लिए सबसे पहले एक BigDecimal में परिवर्तित हो जाता है, और फिर, क्योंकि 1321.507369947139705200000 एक double शाब्दिक है। यह वास्तव में नहीं है कि आप क्या चाहते हैं।

+0

आह दुह, धन्यवाद डेविड! – user10297

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