2015-12-11 2 views
1

У меня есть BigDecimal в Java. Я знаю, что это значение, которое не будет использоваться в большинстве случаев. Когда этот код выполняется, моя консоль выводит следующее: 1789984896489654735783157941777104561834014693972171030528. Это не полный BigDecimal. Мой вопрос в том, почему он не печатает полный номер?Почему значение BigDecimal не соответствует значению, предоставленному ему в конструкторе?

BigDecimal bD = new BigDecimal(1789984896489654689748964897484894895484896546845987465874.54644685486451845867467986798679864598764589459468746587946578945); 
System.out.println(bD); 

ответ

4

Проблема в том, что конструктор, который вы используете: BigDecimal(double). Большая длинная строка цифр преобразуется в Java double, который не имеет почти достаточной точности для того, что вы пытаетесь ввести в BigDecimal.

Вы должны использовать BigDecimal(String) конструктор вместо:

BigDecimal bD = new BigDecimal("1789984896489654689748964897484894895484896546845987465874.54644685486451845867467986798679864598764589459468746587946578945"); 
//       ^                              ^

Demo.

Смежные вопросы