2015-11-24 3 views
-1

Мой вопрос очень простBigDecimal разрыв с большим числом знаков после запятой

В BigDecimal я хочу сделать это:

public static void main (String [] args) { 
    System.out.println(new BigDecimal(1).divide(new BigDecimal(3)); 
} 

Я хочу, чтобы результат будет следующим образом: 0.333333333333333333333333333333333....... и не 0.3334 или 0.33.

+2

Вы знаете, что существует _инфинитное количество 3 штук? Какую точность вы ищете? – Tunaki

+0

да, и я пошел на большое число, я могу получить –

+1

Столь же, как? Как память позволяет вам? Почему вы хотите хранить 1/3 миллиарды миллиардов десятичных чисел? – Tunaki

ответ

4

Все операции BigDecimal позволяют задавать точность (количество цифр после десятичной точки) и режим округления.

System.out.println(
    new BigDecimal(1).divide(new BigDecimal(3), 10, RoundingMode.HALF_UP)); 

будет выдавать 0.3333333333. Вы можете создать объект MathContext для инкапсуляции этой информации. Это полезно, поскольку вам обычно нужно выполнять несколько операций с одинаковыми настройками точности и округления.

MathContext mc = new MathContext(10, RoundingMode.HALF_UP); 
System.out.println(new BigDecimal(1).divide(new BigDecimal(3), mc)); 
System.out.println(new BigDecimal(1).divide(new BigDecimal(9), mc)); 
+1

Я думаю, что его масштаб, а не точность: http://stackoverflow.com/a/13461270/5072526 – hinneLinks