Почему Java BigDecimal возвращается 1E+1?

это указатель на указатель. например, если * x означает, что он будет содержать адрес некоторой переменной, чем, если я скажу, что m = & amp; x, чем m, отображается как int ** m

26
задан parkr 29 May 2009 в 09:51
поделиться

4 ответа

используйте bigDecimal.toPlainString () :

 BigDecimal bigDecimal = BigDecimal.valueOf(100000.0)
                     .multiply(BigDecimal.valueOf(100d))
                     .stripTrailingZeros();
 System.out.println("plain      : " + bigDecimal.toPlainString());
 System.out.println("scientific : " + bigDecimal.toEngineeringString());

выводит:

plain      : 10000000
scientific : 10E+6
43
ответ дан 28 November 2019 в 06:51
поделиться

Точное обоснование поведения BigDecimal.toString () объясняется в API doc в мельчайших (и почти непонятных) деталях.

Чтобы получить согласованное (и зависящее от локали) текстовое представление, вы должны использовать DecimalFormat .

3
ответ дан 28 November 2019 в 06:51
поделиться

Это неявное .

8
ответ дан 28 November 2019 в 06:51
поделиться

Это в основном потому, что у вас недостаточно значащих цифр. Если вы умножите то, что имеет только 1 значащую цифру, на 100, то вы получите что-то, имеющее только 1 значащую цифру. Если он показывает "10", это означает, что он имеет 2 значащих цифры. Чтобы показать, что у него только 1 значащая цифра, нужно показать «1 x 10 ^ 1».

Следующие два десятичных знака имеют одинаковое значение (10), но разные «масштабы» (где они начинают отсчет значащих цифр; вверху есть 2 сиг-фига, внизу - 1):

System.out.println(new BigDecimal(BigInteger.TEN, 0));  // prints 10
System.out.println(new BigDecimal(BigInteger.ONE, -1)); // prints 1E+1
3
ответ дан 28 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: