2

我知道关于同一问题的各种帖子。

我的有点不同,可能有点明显,但我需要你的评论。

我目前正在使用Hibernate SearchLucene来索引实体属性。

我的实体上有一堆Double属性。

一旦开始使用科学记数法,这些使用来自Lucene的默认桥(即负责转换LongToStringStringToLong的桥)的实体会给我带来麻烦。

我正在尝试. xhtml Credit 和 Debit 金额,长度可长达 18 位,DataBase ( DB2 ) 类型为BIGINT

  1. 例如,我不能将数据库类型更改为 Long。
  2. 我无法将实体的 Double 类型属性更改为例如 Long

那么问题是什么? 有没有办法从字符串中说“1234567890”来检索格式为 1234567890 而不是 1.23456789E9 的 Double ,因为它是默认完成的Double.parseDouble(FormattedString)

PD:我知道DecimalFormat的存在,但是考虑到使用这个格式化程序会给我一个正确格式化的字符串说:“#######.E0”但我真正需要的是具有这种格式的 Double,但是,当我这样做时,Double.parseDouble(FormattedString)我会失去这种格式。

希望我很清楚,并感谢您的帮助。

4

3 回答 3

6

有没有办法从字符串中说“1234567890”来检索值为 1234567890 而不是 1.23456789E9 的 Double,因为它是默认完成的Double.parseDouble(FormattedString)

你的问题真的没有意义。1234567890 与 1.23456789E9 的值相同,并且双精度表示其中一个,当且仅当它也代表另一个。

我知道 DecimalFormat 的存在,但是考虑到使用这个格式化程序会给我一个正确格式化的字符串说:“#######.E0”但我真正需要的是具有这种格式的 Double,但是当做 Double.parseDouble(FormatedString) 我会失去这种格式。

不,没有办法构造 aDouble以便以某种方式显示它。toString方法就是这样Double,不能改变。

您唯一能做的就是例如使用DecimalFormatorString.format但正如您所指出的,您总是会得到一个String.

于 2011-02-16T15:27:07.490 回答
4

对 Lucene 一无所知,但您永远不能在 .xhtml 文档中使用 Double,它始终是字符串。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 回答