Java/자카르타 자바에서 숫자 다루기 -Decimal 우혁이 아빠 2012. 7. 19. 14:48 @Test public void test_008() { // 1. 문자를 숫자로 바꿔 출력해보자. String str1 = "1,000"; BigDecimal dNum1; try { dNum1 = NumberUtils.createBigDecimal(str1); } catch (NumberFormatException nfe) { dNum1 = NumberUtils.createBigDecimal(StringUtils.remove(str1, ',')); } System.out.println("1,000 : " + dNum1); // 2. 나눠서 무한대로 나오면 ArithmeticException이 발생 String str2 = "1.0"; String str3 = ".3"; BigDecimal dNum2 = NumberUtils.createBigDecimal(str2); BigDecimal dNum3 = NumberUtils.createBigDecimal(str3); BigDecimal dNum4; try { dNum4 = dNum2.divide(dNum3); System.out.println("dNum4 : " + dNum4); } catch (ArithmeticException ae) { System.out.println("java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result."); } // 3. ArithmeticException을 막기위해서는 round 처리가 필수 String str5 = "1.23456789"; BigDecimal dNum5 = NumberUtils.createBigDecimal(str5); // 소수점 세번째자리에서 반올림 BigDecimal dNum6 = dNum5.round(new MathContext(3, RoundingMode.HALF_EVEN)); System.out.println(dNum6); // 1.23 String str7 = "123456789123456789"; String str8 = "100000000"; BigDecimal dNum7 = NumberUtils.createBigDecimal(str7); BigDecimal dNum8 = NumberUtils.createBigDecimal(str8); BigDecimal dNum9 = dNum7.divide(dNum8); System.out.println(dNum9); // 1234567891.23456789 BigDecimal dNum10 = dNum7.divide(dNum8, 1); System.out.println(dNum10); // 1234567891 // 4. 형식에 맞게 출력 DecimalFormat format = new DecimalFormat("#,##0"); System.out.println(format.format(dNum10)); // 1,234,567,891 String [] strArray = {"3.87888e-1", "3.0105", "abc", "", "1234.1234"}; ArrayList strList = new ArrayList(); for (String str : strArray) { try { BigDecimal bd = new BigDecimal(str); strList.add(bd.toString()); } catch (NumberFormatException e) { strList.add(str); } } for (String str : strList) { System.out.println(str); } } 저작자표시