2015-12-03 3 views
3

У меня есть следующий код.результат больших децимальных вычитаний экспоненциальный

BigDecimal b1 = new BigDecimal("1.12345678912345678"); 
    BigDecimal b2 = new BigDecimal("1.12345678912345678"); 
    System.out.println(b1.subtract(b2)); 

Выход: 0E-17

Как избежать экспоненциальный формат? Метод toPlainString из bigdecimal вернет String, и я не хочу этого. Я хочу, чтобы мой bigdecimal объект был там без экспоненциального значения.

ответ

2

Вы вызываете метод println(Object), и он внутренне использует метод Object.toString().

И от JavaDoc of BigDecimal.toString()

Возвращает строковое представление этого BigDecimal, с использованием научной нотации, если показатель необходим.

Ваше утверждение о toPlainString() метод и желая BigDecimal объект не имеет смысла, так как разница только между toString() метод и метод toPlainString() (Оба из которых возвращают строковое представление в различных форматах). В обоих случаях у вас есть такой жеBigDecimal объект. И разница только во время печати.

+0

На самом деле я не хочу печатать. Предположим, что результат b3 = b1- b2. Теперь я хочу добавить к b3 в b4. Моя цель - не печатать. Но делать дальнейшие расчеты. Это возможно ? – user2354566

+0

@ user2354566, да это возможно ... Просто делайте все свои вычисления с помощью объекта ... И в конце, когда вы хотите распечатать его, используйте метод 'toPlainString()'. – Codebender