2

同じ問題に関してさまざまな投稿が飛び交っていることを認識しています。

私のものは少し異なり、少し明白かもしれませんが、あなたのコメントが必要です.

現在、Hibernate SearchLuceneを使用してエンティティ プロパティのインデックスを作成しています。

エンティティにDoubleプロパティがたくさんあります。

Luceneのデフォルトのブリッジ (ブリッジ、つまりLongToStringStringToLongの変換を担当するもの)を使用するこれらのエンティティは、科学表記法の使用が開始されると問題を引き起こします。

のDataTablesに表示しようとしています。xhtmlクレジットとデビットの金額で、長さは最大 18 桁で、DataBase ( DB2 ) タイプはBIGINTです。

  1. たとえば、DataBase タイプを Long に変更することはできません。
  2. エンティティの Double タイプの属性を Long などに変更することはできません

それで、質問は何ですか? 文字列から「1234567890」と言って、デフォルトで 1.23456789E9 ではなく 1234567890 の Double を取得する方法はありますDouble.parseDouble(FormattedString)か?

PD: DecimalFormatの存在は認識していますが、このフォーマッタを使用すると、正しくフォーマットされた文字列が得られます: "#######.E0" しかし、私が本当に必要としているのは、そのようなフォーマットの Double です。ただし、実行Double.parseDouble(FormattedString)すると、そのような形式が失われます。

私が明確であることを願っています。助けてくれてありがとう。

4

3 に答える 3

6

文字列から「1234567890」と言って、値が 1.23456789E9 ではなく 1234567890 の Double を取得する方法はありますDouble.parseDouble(FormattedString)か?

あなたの質問は本当に意味がありません。1234567890 は 1.23456789E9 と同じ値であり、double はそれらの一方を表し、それが他方も表す場合に限ります。

私は DecimalFormat の存在を認識していますが、このフォーマッタを使用すると正しくフォーマットされた文字列が得られます: "#######.E0" しかし、本当に必要なのはそのようなフォーマットの Double です。 Double.parseDouble(FormatedString) を実行すると、そのような形式が失われます。

いいえ、Double特定の方法で表示されるように を構築する方法はありません。toString方法はそれDoubleが何であるかであり、変更することはできません。

あなたができる唯一のことは、たとえばDecimalFormatorを使用するString.formatことですが、あなたが指摘したように、常にString.

于 2011-02-16T15:27:07.490 に答える
4

Lucene については何も知りませんが、Double を .xhtml ドキュメントに含めることはできません。常に文字列です。Double には Format がなく、Double の String 表現のみが持つ。

于 2011-02-16T15:24:01.453 に答える
1

だから私はついに私の問題の解決策を得ました。aioobeJens 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>

私がぼやけていたこれらの基本的なことを明確にしてくれてありがとう:)

于 2011-02-16T16:31:49.270 に答える