Может ли двойной форматироваться без научной записи? - PullRequest
2 голосов
/ 16 февраля 2011

Мне известны различные сообщения, относящиеся к одной и той же проблеме.

У меня это немного по-другому, и это может быть немного очевидно, но мне понадобятся ваши комментарии.

В настоящее время я использую Hibernate Search и Lucene для индексации свойств сущностей.

У меня есть набор Double свойств для моих сущностей.

Эти объекты, использующие мосты по умолчанию из Lucene (мост, то есть тот, который отвечает за преобразование LongToString и StringToLong ), вызывают у меня проблемы один разнаучная запись начинает использоваться.

Я пытаюсь отобразить на DataTables на. xhtml Суммах кредитов и дебетов, их длина может составлять до 18 цифр, а их базе данных ( DB2 ) тип BIGINT .

  1. Например, я не могу изменить тип базы данных на Long.
  2. Я не могу изменить либо Doubleвведите атрибуты моих сущностей, например, Long

Так в чем же вопрос? Есть ли способ из строки сказать "1234567890", чтобы получить Double, формат которого 1234567890 ине 1.23456789E9, как это делается по умолчанию Double.parseDouble(FormattedString)?

PD: я знаю о существовании DecimalFormat , однако учтите, что использование этого форматера даст мне строкуправильно написано: "#######. E0", но мне действительно нужен Double с таким форматом, однако при выполнении Double.parseDouble(FormattedString) я потеряю такой формат.

Надеюсь, я был ясен испасибо за любую помощь.

Ответы [ 3 ]

6 голосов
/ 16 февраля 2011

Есть ли способ из строки, скажем "1234567890", получить двойное значение 1234567890, а не 1,23456789E9, как это делается по умолчанию Double.parseDouble(FormattedString)?

Ваш вопрос на самом деле не имеет смысла. Значение 1234567890 совпадает со значением 1.23456789E9, и двойной представляет один из них, если и только если он также представляет другой.

Я знаю о существовании DecimalFormat, однако учтите, что использование этого форматера даст мне правильно отформатированную строку: «#######. E0», но мне действительно нужен Double с таким форматом, однако при выполнении Double.parseDouble (FormatedString) я потеряю такой формат.

Нет, нет способа построить Double, чтобы он отображался определенным образом. Метод toString для Double является тем, чем он является, и его нельзя изменить.

Единственное, что вы можете сделать, это, например, использовать DecimalFormat или String.format, но, как вы заметили, у вас всегда будет String.

4 голосов
/ 16 февраля 2011

Не знаю ничего о Lucene, но в документе .xhtml никогда не может быть двойника, это всегда строка символов Двойник не имеет формата, только строковое представление двойника имеет.

1 голос
/ 16 февраля 2011

Итак, я наконец-то нашел решение своей проблемы.После округления, что сказали aioobe и Jens Schauder .Я могу динамически форматировать текст в моем .xhtml со следующим тегом:

<h:outputText value="#{recordTable[column.property]}"
              rendered="#{column.header ne 'Details' and
                          column.header eq ('Total Credit Amount' or
                                            'Total Debit Amount')}">
              <f:convertNumber pattern="########"/>
</h:outputText>

Спасибо за разъяснение мне этих основных вещей, которые я размыл:)

...