Как я могу преобразовать double в строку без записи и с высокой степенью точности в Java? - PullRequest
3 голосов
/ 28 февраля 2012

Я пытаюсь преобразовать double в строку без обозначений, и попробовал это:

f= Double.valueOf(c.getString(c.getColumnIndex(NotesDbAdapter.KEY_VALUE)));  
NumberFormat formatter = new DecimalFormat("###.##############");  

Однако значение 7 ^ 3 ^ 7 возвращается как: 558546000000000000 вместо 558545864083284007. Каквсегда будем рады помочь.

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012
  1. У вас уже есть значение в виде строки. Зачем вообще конвертировать в удвоение?

  2. Вы не можете получить точность из двойника, которую он не может удержать. 558545864083284007 имеет 18 десятичных цифр. A double имеет 53 бита с двоичной точностью, что составляет около 15,9 десятичных цифр. Google для «Что каждый компьютерщик должен знать о плавающей точке».

  3. ###.############## не подходит для маски форматирования для 558545864083284007.

0 голосов
/ 05 марта 2017

Если у вас уже есть огромное десятичное число в строковом формате, попробуйте использовать класс BigDecimal, что-то вроде этого:

    BigDecimal bigDecimalValue = new BigDecimal("1234567890123456789012345678901234567890.54321");
    LOGGER.info("bigDecimalValue: {}", bigDecimalValue.toPlainString());

Вы должны вернуть исходное значение без потери точности:

bigDecimalValue: 1234567890123456789012345678901234567890.54321
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...