Почему существует метод BigDecimal.setScale()
, который устанавливает десятичные значения в какое-то значение и не имеет метода MathContext.setScale()
, но только конструктор MathContext(precision)
или наоборот, почему нет метода BigDecimal.setPrecision()
?Почему нет метода BigDecimal.setPrecision()?
EDIT: Нет способа MathContext.setPrecision()
, только конструктор MathContext(precision)
. Отредактирован текст. Простите за это.
EDIT2: Я просто хотел понять, почему существуют два способа приближения к настройке масштаба/точности. Кажется, нет никакой реальной причины иметь двух из них относительно ответа Ричарда Ситце.
Смотрите этот пример, который делает ясно, что вы можете действительно странные результаты playign с точностью и масштабом:
MathContext mc = new MathContext(2);
BigDecimal test = new BigDecimal("100.234", mc);
System.out.println("Scale: " + test.scale() + ", value: " + test);
test.setScale(6);
System.out.println("Scale: " + test.scale() + ", value: " + test);
test = test.add(new BigDecimal("100"));
System.out.println("Scale: " + test.scale() + ", value: " + test);
Результаты в:
Scale: -1, value: 1.0E+2
Scale: -1, value: 1.0E+2
Scale: 0, value: 200
Результаты являются правильными в отношении параметров, но когда я установил шкала до 6 Я ожидаю предупреждение/подсказку/исключение, в котором говорится, что прецизионные настройки не позволяют использовать шкалу 6.
Вам нужно спросить, кто пишет 'BigDecimal'. – arshajii
Какую конкретную проблему вы пытаетесь решить, задав этот вопрос? –
@SteveP. Точность может быть задана как аргумент конструктора MathContext. MathContext неизменен, поэтому никаких методов setXXX вообще не существует. –